Regex-Matches geben im Listenkontext eine leere Liste zurück. Perl optimiert leere Listen innerhalb von Listen komplett weg. Somit hat folgendes Hash nur einen Key und einen Value, nämlich "a" und "123" respektive:
my %h = ( a => $unicorn =~ /Charlie/, 123 => $cat =~ /mat/);
Die hier geänderten Stellen funktionieren nur deshalb korrekt, weil es jeweils nur einen Regex-Match im Hash gibt und dieser ganz am Ende steht. Da die Values dazu im booleschen Kontext genutzt werden und nicht existierende Hash-Values schlicht undef sind, funktioniert es so lange, bis jemand einen Eintrag hinzufügt. Also vorsichtshalber gleich Skalarkontext erzwingen.
Skalarkontext erzwingen
Regex-Matches geben im Listenkontext eine leere Liste zurück. Perl
optimiert leere Listen innerhalb von Listen komplett weg. Somit hat
folgendes Hash nur einen Key und einen Value, nämlich "a" und "123"
respektive:
my %h = ( a => $unicorn =~ /Charlie/,
123 => $cat =~ /mat/);
Die hier geänderten Stellen funktionieren nur deshalb korrekt, weil es
jeweils nur einen Regex-Match im Hash gibt und dieser ganz am Ende
steht. Da die Values dazu im booleschen Kontext genutzt werden und
nicht existierende Hash-Values schlicht undef sind, funktioniert es so
lange, bis jemand einen Eintrag hinzufügt. Also vorsichtshalber gleich
Skalarkontext erzwingen.