关于另一个SO问题的示例here。
我将以下代码添加到我的基本perl脚本中。
#!/usr/bin/perl
$^I = '.bak'; # create a backup copy
while (<>)
{
s/NewProdId/$ARGV[1]/g; # do the replacement
s/PortId/$ARGV[2]/g; # do the replacement
s/AssemblyId/$ARGV[3]/g; # do the replacement
print; # print to the modified file
}
然而,当我使用多个参数调用perl脚本时,它会中断。它似乎误将我的另一个参数误认为是打开它的文件名。
无法打开1-THU-71:。/ process.pl第11行没有此类文件或目录,&lt;&gt;第37行。
无法打开1-5XJ0DF:./process.pl行没有此类文件或目录 11,&lt;&gt;第37行。
无法打开1-3F0MB9:./process.pl行没有此类文件或目录 11,&lt;&gt;第37行。
我的bash脚本调用是这样的:
./process.pl "test.txt" $values
我在这里做错了什么?
答案 0 :(得分:5)
菱形运算符<>
尝试打开参数中提到的所有文件。您应该从@ARGV
中删除不是文件名的元素:
my @ar = @ARGV;
@ARGV = shift @ARGV;
while (<>)
{
s/NewProdId/$ar[1]/g; # do the replacement
s/PortId/$ar[2]/g; # do the replacement
s/AssemblyId/$ar[3]/g; # do the replacement
print; # print to the modified file
}