大佬教程收集整理的这篇文章主要介绍了perl – 移位和解除引用操作符的问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#! /usr/bin/perl use Strict; use warnings; use feature ':5.10'; $,= ': '; $" = ','; my $sub = sub { "@_" }; sub u { shift->(@_) } sub v { my $s = shift; $s->(@_) } say 'u',u($sub,'foo','bar'); say 'v',v($sub,'bar');
输出:
u: CODE(0x324718),foo,bar v: foo,bar
我希望你和你的行为完全相同,但事实并非如此.在这些情况下,我总是假设perl评估了从左到右的事情.代码如shift-> another_method(@_)甚至shift-> another_method(shift,’stuff’,@ _)非常常见.
如果第一个参数恰好是代码引用,为什么会中断?我在未定义/未记录的领域吗?
>perl -MO=Concise,u,-exec a.pl main::u: 1 <;> nextstate(main 51 a.pl:11) v:%,*,&,x*,x&,x$,$,469762048 2 <0> pushmark s 3 <#> gv[*_] s 4 <1> rv2av[t2] lKM/3 5 <0> shift s* 6 <1> entersub[t3] KS/TARG,2 7 <1> leavesub[1 ref] K/REFC,1 a.pl syntax OK
在同一表达式中使用和修改变量都很危险.除非您能解释以下内容,否则最好避免使用它:
>perl -E"$i=5; say $i,++$i,$i" 666
你可以用
$_[0]->(@_[1..$#_])
以上是大佬教程为你收集整理的perl – 移位和解除引用操作符的问题全部内容,希望文章能够帮你解决perl – 移位和解除引用操作符的问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。