Perl中数字和标量的连接

时间:2013-08-24 13:12:31

标签: perl

我正在尝试登录所有计算机。所以写了一个Perl脚本

my $i = 7;
while ($i < 20){
    my $key = "192\.235\.2\.$i.1 ";
    print $key;
    $i++;
}

192.235.2.71.191。但连接失败了。

2 个答案:

答案 0 :(得分:5)

您不能在字符串中使用concatentation 。双引号字符串中的$i.1将插入$i的值,但保留.1。您可以在字符串外部进行连接并写入'192.235.2.'.$i.'1'(点不需要转义)。但是写"192.235.2.${i}1"更容易。 ${i}$i相同,但避免了与$i1的歧义。

如果您想以10为增量打印从192.235.2.71192.235.2.191的所有IP地址,请考虑

print join(' ', map "192.235.2.${_}1", 7 .. 19), "\n";

答案 1 :(得分:1)

如果要连接,则不使用字符串连接而是使用字符串插值:

my $key="192.235.2." . $i . ".1 ";

如果要通过插值获得相同的结果:

my $key="192.235.2.$i.1 ";

无论如何,没有必要逃避点,你不是在正则表达式匹配上下文...