0

我正在尝试登录所有机器。于是写了一个Perl脚本

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

192.235.2.71.191。但是这里的连接失败了。

4

2 回答 2

5

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

如果要以10 为增量打印从192.235.2.71到的所有 IP 地址,请考虑192.235.2.191

print join(' ', map "192.235.2.${_}1", 7 .. 19), "\n";
于 2013-08-24T14:16:26.590 回答
1

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

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

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

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

无论如何,无需转义点,您不在正则表达式匹配上下文中...

于 2013-08-24T13:17:48.847 回答