-2
#!/usr/bin/perl

use strict;
use warnings;

my $file;
my @files;
my $parse;
my @files = <*>;
foreach $file(@files)
 chomp ($file);
{
 $parse = system qq(paste <(cut -f1,2,13 $file) <(cut -f12 $file));
}

"my" variable @files masks earlier declaration in same scope at Rast_seq.pl line 11.
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected
sh: 1: Syntax error: "(" unexpected

请帮我解决这个错误。

4

2 回答 2

1

这里有几个问题:

  • 您要声明 @files 数组两次;
  • chomp ($file);for街区外;
  • chomp ($file);在这种情况下没用:<*>返回文件名列表 - 您没有阅读行(我建议您使用glob '*';它,因为它更具可读性);
  • system函数运行你的命令使用/bin/shwhich - 看起来 - 不支持<(...)构造
于 2013-03-18T11:13:51.303 回答
1

将左大括号移到{the 之前chomp;
并删除第一个my @files;
并更改分隔符qq

my $file;
my $parse;
my @files = <*>;

foreach $file(@files) {
    chomp ($file);
    $parse = system qq#paste <(cut -f1,2,13 $file) <(cut -f12 $file)#;
}
于 2013-03-18T10:55:11.907 回答