Perl中这两个print语句之间的区别是什么?if语句在做什么?

Perl中这两个print语句之间的区别是什么?if语句在做什么?,perl,Perl,代码1 代码2 my @ ary = ( 1, 2, 3 ); print "size = " . @ ary . "\n" ; print "size = @ ary \n"; 你能解释一下“代码1”中两个打印命令的区别吗 如果“代码2”中的语句中的代码在做什么?通常,您会将“sigil”(本例中的@符号)附加到变量名称上。但是,在双引号字符串之外,可以用空格分隔它们。在双引号字符串中,符号和变量名之间不得有空格。当符号和双引号内的名称之间有空格时,@是一个@,名称是一个字符串

代码1

代码2

my @ ary = ( 1, 2, 3 );   
print "size = " . @ ary . "\n" ;  
print "size = @ ary \n";  
你能解释一下“代码1”中两个打印命令的区别吗


如果“代码2”中的语句中的代码在做什么?

通常,您会将“sigil”(本例中的@符号)附加到变量名称上。但是,在双引号字符串之外,可以用空格分隔它们。在双引号字符串中,符号和变量名之间不得有空格。当符号和双引号内的名称之间有空格时,
@
是一个
@
,名称是一个字符串

此外,在标量上下文(例如字符串串联)中,
@ary
生成数组的大小

因此,印刷产生:

if( $thing =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/ )
{
print "$1  $2  $3  $4\n";
}
如果写得更正统一些,您可能会:

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";
if
语句及其下面的print语句查看
$thing
中的字符串,看看它是否是由四个由点分隔的数字序列,然后打印出四个组成部分的数字。例如,如果您有:

size = 3
size = @ ary
size = 1 2 3
然后它会打印出来

$thing = "192.29.36.256";

如果你认为那是一个I/p地址,你几乎是对的,但它实际上不是一个I/p地址。但是,代码也会处理
“12031.99023.23412212.23459790523”

在提问之前,请花时间仔细考虑您想问的整个问题。另外,请花时间正确缩进代码。选择它,然后按编辑框上方的
{}
按钮。注意@JonathanLefflerHi@jonathanleffler,你能用一个实时示例解释一下if块吗,因为我无法清楚地得到它;因此,只有批处理—没有实时性。你还不明白什么
$thing
必须是包含字符串的变量。如果字符串包含4组十进制数字,以点分隔,字符串中没有其他字符,则将打印这四个数字。有关详细说明,请参见,以及稍后的和。或者读一本关于Perl的书(骆驼书或骆驼书,或者骆驼后面的羊驼书)。这里有一个问题,当你说$thing作为字符串时,你的意思是我们在“”中定义它就像在java中一样吗?或者说perl中的字符串与java中的字符串相同?在引号中,我们可以有数字和字母数字数据?这是perl:TMTOWTDI-有多种方法可以做到这一点。在我的回答中,我展示了:
$thing=“192.29.36.256”-那看起来像什么?您还可以编写:
$thing='192.29.36.256'
$thing=qq{192.29.36.256}
$thing=q(192.29.36.256),或
$thing=q#192.29.36.256#-或者,如果你是虐待狂,
$thing=qq'192.29.36.256'
$thing=q“192.29.36.256”,等等。它们都是字符串;选项库还包括一些其他的选择。很酷,谢谢你的解释,我的意思是“192sa.232ds.1dsd.wq22”,这不正确吗?
192  29  36  256