Perl中这两个打印语句有什么区别?什么是if语句呢?

时间:2015-02-10 05:52:55

标签: perl

代码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语句中的代码是什么?

1 个答案:

答案 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"