perl -E 'say for map s/(æ|ø|å)/ {qw(æ ae ø oe å aa)}->{$1}/ger, qw(rød gul blå)'
perl -E 'say for map s/(æ|ø|å)/"".{qw(æ ae ø oe å aa)}->{$1}/ger, qw(rød gul blå)'
Run Code Online (Sandbox Code Playgroud)
上面的第一行给了我,syntax error at -e line 1, near "}->"但第二行给了我roed,gul与blaa预期的一样。这是编译器的弱点,还是有我看不见的某些原因?我测试并在版本5.10、5.22和5.26中获得了此行为。
我只是想知道这段代码会发生什么。为什么仅直接打印时结果不正确,为什么换行符被忽略?
user@host_09:22 AM: perl
print 2 >> 1, "\n";
print 2 & 2, "\n";
print (2 & 2) >> 1, "\n";
1
2
2user@host_09:22 AM: perl
$a = (2 & 2) >> 1;
print "$a\n";
1
Run Code Online (Sandbox Code Playgroud)