my $list = "1 3"; my @arr = split " ",$list; my $c = $arr[0] ^ $arr[1]; print $c,"\n";
以上是一个异常的角色.
应该给出答案为2,因为1 XOR 3是2.
解决方法
^考虑其操作数的内部存储格式以确定要执行的操作.
>perl -E"say( 1^3 )" 2 >perl -E"say( '1'^'3' )" ☻
后者xrs字符串的每个字符.
>perl -E"say( chr( ord('1')^ord('3') ) )" ☻
您可以通过添加零强制数字.
>perl -E"@a = split(' ','1 3'); say( (0+$a[0])^(0+$a[1]) )" 2 >perl -E"@a = map 0+$_,split(' ','1 3'); say( $a[0]^$a[1] )" 2
从技术上讲,您只需要将其中一个操作数设为数字.
>perl -E"@a = split(' ','1 3'); say( (0+$a[0])^$a[1] )" 2 >perl -E"@a = split(' ','1 3'); say( $a[0]^(0+$a[1]) )" 2