我遇到的事情我不明白这里是我的代码:
@iprouteur = split( /./, $arraylist[1] );
print "lip du routeur est $arraylist[1]\n";
for ( $i = 2; $i <= $#arraylist; $i++ ) {
print "we found secondary which is $arraylist[$i]\n";
@secondary = split( /./, $arraylist[$i] );
print "voici les ip a comparer : $iprouteur[0] $iprouteur[1] $iprouteur[2] et $secondary[0] $secondary[1] $secondary[2] \n";
if ( $iprouteur[0] eq $secondary[0] && $iprouteur[1] eq $secondary[1] && $iprouteur[2] eq $secondary[2] ) {
print "we need to splice \n";
}
}
输出如下:
lip du routeur est 126.x.x.x
we found secondary which is 126.x.x.x/24
voici les ip a comparer : et
we need to splice
为什么perl无法找到 $ iprouteur [x] 和 $ secondary [y] 变量中的内容?
答案 0 :(得分:2)
问题是您使用正则表达式/./
进行拆分。句点.
是一个元字符,它是通配符,匹配除换行符之外的任何字符。所以它在使用时会占用你的整个字符串,并返回一堆空字符串。解决方案是逃避这段时间:
@secondary = split(/\./, $arraylist[$i]);
# ^--- note the backslash
我在评论中的意思是这一行:
print "voici les ip a comparer : $iprouteur[0] $iprouteur[1] $iprouteur[2] et $secondary[0] $secondary[1] $secondary[2] \n";
可写:
print "voici les ip a comparer : @iprouteur[0,1,2] et @secondary[0,1,2] \n";
阅读和写作都更容易。
答案 1 :(得分:2)
我的不好,我忘了使用&#34;。&#34;使用拆分功能
我忘记了这是一个特殊的角色。
@iprouteur = split(/\./,$arraylist[1]);
@secondary = split(/\./, $arraylist[$i]);