perl – 在sigil和它的变量名之间应该忽略空间吗?
发布时间:2020-12-15 22:04:20 所属栏目:大数据 来源:网络整理
导读:我只是发现perl忽略了sigil和它的变量名之间的空间,并且想知道有人可以告诉我这是否是预期的行为.我从来没有遇到过这种情况,可能会导致字符串中的奇怪行为. 例如,在下面的代码中,$bar将以值’foo’结尾: my $foo = 'foo';my $bar = "$ foo"; 这也适用于变量
我只是发现perl忽略了sigil和它的变量名之间的空间,并且想知道有人可以告诉我这是否是预期的行为.我从来没有遇到过这种情况,可能会导致字符串中的奇怪行为.
例如,在下面的代码中,$bar将以值’foo’结尾: my $foo = 'foo'; my $bar = "$ foo"; 这也适用于变量声明: my $ bar = "foon"; print $bar; 第二种情况对我来说并不重要,但是在字符串插值的情况下,这可能会导致非常混乱的行为.任何人都知道这一点吗? 解决方法
是的,这是语言的一部分.不,你不应该把它用于严重的代码.至于在插值中混乱,所有美元符号(不是变量的一部分)应该被转义,而不仅仅是字母旁边的符号,所以不应该是一个问题.
我不知道这是否是让sigil和变量名之间的空格背后的真正原因,但它可以让你做一些事情 my $ count = 0; my $file_handle_foo = IO::File->new; 这可能被一些人看得很方便(因为它使得sigils和变量名称的独特部分彼此相邻).它也适用于Obfu(参见第9行和第10行的开头): #!/usr/bin/perl -w # camel code use strict; $_='ev al("seek 40D ATA,0;");foreach(1..3) {<DATA>;}my @camel1hump;my$camel; my$Camel ;while( <DATA>){$_=sprintf("%-6 9s",$_);my@dromedary 1=split(//);if(defined($ _=<DATA>)){@camel1hum p=split(//);}while(@dromeda ry1){my$camel1hump=0 ;my$CAMEL=3;if(defined($_=shif t(@dromedary1 ))&&/S/){$camel1hump+=1<<$CAMEL;} $CAMEL--;if(d efined($_=shift(@dromedary1))&&/S/){ $camel1hump+=1 <<$CAMEL;}$CAMEL--;if(defined($_=shift( @camel1hump))&&/S/){$camel1hump+=1<<$CAMEL;}$CAMEL--;if( defined($_=shift(@camel1hump))&&/S/){$camel1hump+=1<<$CAME L;;}$camel.=(split(//," 40..m`{/J 47134}L^7FX"))[$camel1h ump];}$camel.="n";}@camel1hump=split(/n/,$camel);foreach(@ camel1hump){chomp;$Camel=$_;y/LJF7173175` 47/ 61 62 63 064 65 66 67 70/;y/12345678/JL7F175173 47`/;$_=reverse; print"$_ 40$Cameln";}foreach(@camel1hump){chomp;$Camel=$_;y /LJF7173175` 47/12345678/;y/12345678/JL7F175173 47`/; $_=reverse;print" 40$_$Cameln";}';;s/s*//g;;eval; eval ("seek 40DATA,0;");undef$/;$_=<DATA>;s/s*//g;( );;s ;^.*_;;;map{eval"print"$_"";}/.{4}/g; __DATA__ 124 1 50145 40165163145 401571 46 401 41 40143141 1551451 54 401 51155 141 147145 40151156 40141 16316 3 157143 15114116 41511 57156 40167 1511641 50 40 1201 45162 154 4015 1163 04014 1 401 641621 41144 145 15514 1162 153 4 0157 146 04011 7 47 1221 4515 11541 54171 40 46 01210116 316 315 714315 114 116 4145163 54 40 11115614 3 56 40 12516314514 4 40 1671 511641 50 40160 145162 155151 163163 1511 57156 56 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |