Perl 如何将文件中的行打印到单独的文件

Perl 如何将文件中的行打印到单独的文件,perl,Perl,我有一个文件,上面有这样的行: 1 107275 447049 scaffold1443 465 341154 - 有几行以1开头,然后空行分开,以2开头,依此类推。 我想根据它们的编号将这些行分隔为不同的文件。 我写了这个脚本,但它在每个文件中只打印第一行 #!/usr/bin/perl #script for choosing chromosome use strict; my $filename= $ARGV[0]; open(FILE, $filena

我有一个文件,上面有这样的行:

1       107275  447049 scaffold1443     465     341154  -
有几行以1开头,然后空行分开,以2开头,依此类推。 我想根据它们的编号将这些行分隔为不同的文件。 我写了这个脚本,但它在每个文件中只打印第一行

#!/usr/bin/perl
#script for choosing chromosome
use strict;

my $filename= $ARGV[0];
open(FILE, $filename);
while (my $line = <FILE>) {
my @data = split('\t', $line);
my $length = @data;
#print $length;
my $num = $data[0];
if ($length ==  6) {
open(my $fh, '>', $num);
print $fh $line;
}
$num = $num + 1;
}
#/usr/bin/perl
#染色体选择脚本
严格使用;
我的$filename=$ARGV[0];
打开(文件,$filename);
while(我的$line=){
my@data=split('\t',$line);
我的$length=@data;
#打印$长度;
my$num=$data[0];
如果($length==6){
打开(我的$fh,“>”,$num);
打印$fh$行;
}
$num=$num+1;
}

求你了,我需要你的帮助

使用
>
打开文件以附加到文件末尾,因为
始终将所需文件截断为零字节

use strict;

my $filename = $ARGV[0];
open(my $FILE, "<", $filename) or die $!;
while (my $line = <$FILE>) {
  my @data = split('\t', $line);
  my $length = @data;
  #print $length;
  my $num = $data[0];
  if ($length ==  6) {
    open(my $fh, '>>', $num);
    print $fh $line;
  }
  $num = $num + 1;
}
使用严格;
我的$filename=$ARGV[0];

打开(我的$FILE,“如果我正确理解了你的问题,那么段落模式可能会有用。这会在两行或多行上打破记录,而不仅仅是一行:

@ARGV or die "Supply a filename\n";
my $filename= $ARGV[0];

local $/ = "";    # Set paragraph mode
open(my $file, $filename) or die "Unable to open '$filename' for read: $!";

while (my $lines = <$file>) {

    my $num = (split("\t", $lines))[0];

    open(my $fh, '>', $num) or die "Unable to open '$num' for write: $!";
    print $fh $lines;
    close $fh;
}

close $file;
@ARGV或die“提供文件名\n”;
我的$filename=$ARGV[0];
本地$/=“”#设置段落模式
打开(我的$file,$filename)或死亡“无法打开$filename读取:$!”;
while(我的$line=){
我的$num=(拆分(“\t”,$line))[0];
打开(my$fh,“>”,$num)或死亡“无法打开$num进行写入:$!”;
打印$fh$行;
收盘价$fh;
}
关闭$file;