gpt4 book ai didi

perl - 是否应该忽略符号与其变量名称之间的空格?

转载 作者:行者123 更新时间:2023-12-04 02:08:58 26 4
gpt4 key购买 nike

我刚刚发现 perl 忽略了 sigil 和它的变量名之间的空格,想知道是否有人能告诉我这是否是预期的行为。我以前从未遇到过这种情况,它可能会导致字符串内部出现奇怪的行为。

例如,在下面的代码中,$bar 将以值 'foo' 结尾:

my $foo = 'foo';
my $bar = "$ foo";

这也适用于变量声明:
my $



bar = "foo\n";
print $bar;

第二种情况对我来说并不重要,但在字符串插值的情况下,这可能会导致非常困惑的行为。有人知道这是什么一回事吗?

最佳答案

是的,它是语言的一部分。不,您不应该将它用于严肃的代码。至于插值困惑,所有美元符号(不是变量的一部分)都应该被转义,而不仅仅是字母旁边的那些,所以这应该不是问题。

我不知道这是否是在 sigil 和变量名之间允许空格的真正原因,但它允许你做类似的事情

my $            count = 0;
my $file_handle_foo = IO::File->new;

有些人可能会认为这很方便(因为它将符号和变量名称的唯一部分放在一起)。它对 Obfu 也很有用(参见第 9 行的结尾和第 10 行的开头):
#!/usr/bin/perl -w                                      # camel code
use strict;

$_='ev
al("seek\040D
ATA,0, 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(//,"\040..m`{/J\047\134}L^7FX"))[$camel1h
ump];}$camel.="\n";}@camel1hump=split(/\n/,$camel);foreach(@
camel1hump){chomp;$Camel=$_;y/LJF7\173\175`\047/\061\062\063\
064\065\066\067\070/;y/12345678/JL7F\175\173\047`/;$_=reverse;
print"$_\040$Camel\n";}foreach(@camel1hump){chomp;$Camel=$_;y
/LJF7\173\175`\047/12345678/;y/12345678/JL7F\175\173\0 47`/;
$_=reverse;print"\040$_$Camel\n";}';;s/\s*//g;;eval; eval
("seek\040DATA,0,0;");undef$/;$_=<DATA>;s/\s*//g;( );;s
;^.*_;;;map{eval"print\"$_\"";}/.{4}/g; __DATA__ \124
\1 50\145\040\165\163\145\040\157\1 46\040\1 41\0
40\143\141 \155\145\1 54\040\1 51\155\ 141
\147\145\0 40\151\156 \040\141 \163\16 3\
157\143\ 151\141\16 4\151\1 57\156
\040\167 \151\164\1 50\040\ 120\1
45\162\ 154\040\15 1\163\ 040\14
1\040\1 64\162\1 41\144 \145\
155\14 1\162\ 153\04 0\157
\146\ 040\11 7\047\ 122\1
45\15 1\154\1 54\171 \040
\046\ 012\101\16 3\16
3\15 7\143\15 1\14
1\16 4\145\163 \054
\040 \111\156\14 3\056
\040\ 125\163\145\14 4\040\
167\1 51\164\1 50\0 40\160\
145\162 \155\151
\163\163 \151\1
57\156\056

关于perl - 是否应该忽略符号与其变量名称之间的空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/745278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com