Perl 中的这两个打印语句有什么区别? if 语句在做什么?
What is the difference between these two print statements in Perl? And what is the if statement doing?
代码 1
my @ ary = ( 1, 2, 3 );
print "size = " . @ ary . "\n" ;
print "size = @ ary \n";
代码 2
if( $thing =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ )
{
print " \n";
}
你能解释一下'Code 1'中两个打印命令的区别吗?
'Code 2' 中的 if
语句中的代码在做什么?
通常,您将 'sigil'(在本例中为 @
符号)附加到变量名称。但是,在双引号字符串之外,您可以用 space 分隔它们。在双引号字符串中,印记和变量名之间不能有 space。当印记和双引号内的名字之间有一个 space 时,@
是一个 @
并且名字是一个字符串。
此外,在标量上下文中,例如字符串连接,@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
语句及其后面的打印语句查看$thing
中的字符串,看它是否是由点分隔的四串数字组成的序列,然后打印出四个组成部分的数字.例如,如果您有:
$thing = "192.29.36.256";
然后它会打印
192 29 36 256
如果您认为那是一个 I/P 地址,那么您几乎是对的,但当然它实际上并不是一个 I/P 地址。但是代码也可以处理 "12031.99023.23412212.23459790523"
。
代码 1
my @ ary = ( 1, 2, 3 );
print "size = " . @ ary . "\n" ;
print "size = @ ary \n";
代码 2
if( $thing =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ )
{
print " \n";
}
你能解释一下'Code 1'中两个打印命令的区别吗?
'Code 2' 中的 if
语句中的代码在做什么?
通常,您将 'sigil'(在本例中为 @
符号)附加到变量名称。但是,在双引号字符串之外,您可以用 space 分隔它们。在双引号字符串中,印记和变量名之间不能有 space。当印记和双引号内的名字之间有一个 space 时,@
是一个 @
并且名字是一个字符串。
此外,在标量上下文中,例如字符串连接,@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
语句及其后面的打印语句查看$thing
中的字符串,看它是否是由点分隔的四串数字组成的序列,然后打印出四个组成部分的数字.例如,如果您有:
$thing = "192.29.36.256";
然后它会打印
192 29 36 256
如果您认为那是一个 I/P 地址,那么您几乎是对的,但当然它实际上并不是一个 I/P 地址。但是代码也可以处理 "12031.99023.23412212.23459790523"
。