使用系统写入sh终端后,防止Perl程序从打印换行符开始

时间:2017-12-11 07:17:37

标签: linux bash shell perl

我正在尝试将数据从文件提取到Perl程序并使用“foreach”循环在Linux sh终端中执行它但是每次Perl将值返回到sh终端时它将打印一个新行,然后打印下一个字符串,导致我的脚本失败。我该如何预防?

open(FILE, "input") or die("Unable to open file");

# read file into an array
@data = <FILE>;

# close file 
close(FILE);

foreach my $x(@data) {
    system "/granite_api.pl -type update_backdoor -project tgplp -test_id $x -turninid 4206";
}

预期产出:

/granite_api.pl -type update_backdoor -project tgplp -test_id example -turninid 4206

实际输出:

/granite_api.pl -type update_backdoor -project tgplp -test_id example 
 -turninid 4206

1 个答案:

答案 0 :(得分:4)

使用

@data = <FILE>;

@data包含输入文件中的所有行。每行以LF结尾。您需要使用$x从每个chomp中删除它(删除$/中设置的尾随字符)

foreach my $x ( @data ) {
    chomp $x;
    system "/granite_api.pl -type update_backdoor -project tgplp -test_id $x -turninid 4206";
}

请参阅chomp in perldoc