pla*_*etp 1 arrays perl concatenation
我只是尝试用Perl连接Perl中的数组+并得到奇怪的结果:
perl -wE 'say([1, 2, 3] + [4, 5, 6])'
73464360
Run Code Online (Sandbox Code Playgroud)
使用哈希执行相同操作似乎是语法错误:
perl -wE 'say({} + {})'
syntax error at -e line 1, near "} +"
Execution of -e aborted due to compilation errors.
Run Code Online (Sandbox Code Playgroud)
第一个表达的结果是什么?是否记录在任何地方?
它来自引用的数量,它产生引用的内存地址.
perl -E 'say \@a; say 0+\@a; printf "%x\n",0+\@a'
Run Code Online (Sandbox Code Playgroud)
典型输出(尽管每次运行程序时都可能会更改)
ARRAY(0x1470518)
21431576
1470518 <--- same number as in first line
Run Code Online (Sandbox Code Playgroud)
您的哈希引用示例几乎可以工作,但似乎Perl将第一组{}块解析为代码块而不是哈希引用.如果您使用一元+并强制Perl将其视为哈希引用,它将起作用.我的意思是"工作".
perl -E 'say(+{} + {})'
40007168
Run Code Online (Sandbox Code Playgroud)