代码1
my @ ary = ( 1, 2, 3 );
print "size = " . @ ary . "\n" ;
print "size = @ ary \n";
代码2
if( $thing =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ )
{
print "$1 $2 $3 $4\n";
}
您能否解释一下'Code 1'中两个打印命令之间的区别?
“代码2”中if
语句中的代码是什么?
答案 0 :(得分:2)
通常,您将“sigil”(在这种情况下为@
符号)附加到变量名称。但是,在双引号字符串之外,您可以用空格分隔它们。在双引号字符串中,sigil和变量名之间不能有空格。当sigil与双引号内的名称之间有空格时,@
为@
,名称为字符串。
此外,在标量上下文中,例如字符串连接,@ary
会产生数组的大小。
因此,印刷产生:
size = 3
size = @ ary
写得更正统,你可能有:
#!/usr/bin/env perl
use strict;
use warnings;
my @ary = ( 1, 2, 3 );
print "size = " . @ary . "\n";
print "size = @ ary\n";
print "size = @ary\n";
这会产生:
size = 3
size = @ ary
size = 1 2 3
if
语句及其后面的print语句查看$thing
中的字符串,看它是否是由点分隔的四个数字序列的序列,然后打印出四个组件号。例如,如果您有:
$thing = "192.29.36.256";
然后会打印
192 29 36 256
如果您认为这是一个I / P地址,那么您几乎是对的,但当然它实际上并不是I / P地址。但代码也会处理"12031.99023.23412212.23459790523"
。