加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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("seek40D
           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`{/J47134}L^7FX"))[$camel1h
      ump];}$camel.="n";}@camel1hump=split(/n/,$camel);foreach(@
      camel1hump){chomp;$Camel=$_;y/LJF7173175`47/616263
      06465666770/;y/12345678/JL7F17517347`/;$_=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
           ("seek40DATA,0;");undef$/;$_=<DATA>;s/s*//g;(   );;s
             ;^.*_;;;map{eval"print"$_"";}/.{4}/g; __DATA__   124
               1   5014540165163145401571 46401  41
                    40143141  1551451 54401   51155  141
                    147145  40151156 40141    16316 3
                     157143   15114116  41511     57156
                     40167  1511641   5040      1201
                     45162   1544015    1163      04014
                     1401   641621      41144       145
                     15514    1162       1534        0157
                      146     04011     747         1221
                      4515      11541  54171          40
                      46         01210116            316
                      315           714315             114
                      116            4145163           54
                     40            11115614         356
                    40         12516314514         440
                    1671        511641  50         40160
                  145162                              155151
                163163                                1511
              5715656

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读