Vorrei utilizzare un "regex compilato" (intendo: un'espressione nel formato qr/../
) come chiave per una struttura hash.riconoscimento di "tipo" di chiavi hash
di discernere tra stringhe costanti e di queste espressioni regolari quando scorrere il Keyes hash, stavo cercando di usare ref()
, o is_regexp()
, ma gli ex restituisce una stringa nulla, e quest'ultimo non funziona. Temo che mi manchi qualcosa di fondamentale sui riferimenti Perl rispetto agli scalari.
A parte questo, la mia soluzione sembra funzionare. E 'troppo brutto comunque? Qualsiasi proposta alternativa è la benvenuta.
il codice per capire ref()
funzione:
my $regex = qr/foo/;
printf "ref(\$regex): %s \n", ref($regex);
printf "is_regexp(\$regex): %d \n", is_regexp($regex);
# ref($regex): Regexp
# is_regexp($regex): 1
my $scalar = 3;
printf "ref(\$scalar): [%s] \n", ref($scalar);
# ref($scalar): []
my %my_hash = ('name', 'Becky', 'age', 23);
for my $k (keys %my_hash) {
printf "%s [%s] -> %s [%s] \n", $k, ref($k), $my_hash{$k}, ref($my_hash{$k});
}
# name [] -> Becky []
# age [] -> 23 []
Le chiavi in un hash sono stringhe. 'ref' restituirà sempre' undef' per quelli. Se si utilizza qualcosa come una chiave che non è una stringa, viene convertita in stringa. – Qtax