我有一个这样的函数:
open my $pipe, "-|", '/usr/bin/externalcmd | /usr/bin/awk '{print $2" "$4}''
|| die "can't fork command: $!";
while (<$pipe>) {
my ($if, $ip) = split;
my $file = "/some/file/$if";
open (FILE, ">$file") || die "can't open $file for $ip: $!";
# ...
close(FILE);
}
close ($pipe);
它在open
上失败,并出现以下错误:
当在线路1383上用-T开关运行时处于打开状态的不安全依赖性,<管道>第1行。
我该怎么解决这个问题?
答案是"洗衣";通过正则表达式匹配$if
变量,如下所示:
# e.g., only "word" characters
if ($if =~ /^([-@w.]+)z/) {
$if = $1;
} else {
die "Bad data in '$if'";
}
然后像以前一样继续。