我有这个perl脚本(下面)将每个文件中的行数拆分为1个数据文件。我正在尝试修改此脚本,将第一个文件(标题行)的第一行写入每个拆分文件的顶部。做这个的最好方式是什么?Perl脚本按行数拆分文件..将标题行添加到每个文件的顶部
use strict;
use warnings;
my $source = shift or &usage();
my $lines_per_file = shift or &usage();
my $filename = shift or &usage();
my $target = shift or &usage();
my $filenum = 2;
my $dir = "${target}";
chdir($dir) or die "Failed to cd to $dir: $!";
$filename =~ s{\.[^.]+$}{};
open (my $FH, "<$source") or die "Could not open source file. $!";
open (my $OUT, ">${filename}_1.csv") or die "Could not open destination file. $!";
print "Writing file: ${filename}_1.csv\n";
my $i = 0;
while (<$FH>) {
print $OUT $_;
$i++;
if ($i % $lines_per_file == 0) {
close($OUT);
my $FHNEW = ($filenum);
open ($OUT, ">${filename}_${FHNEW}.csv") or die "Could not open destination file. $!";
print "Writing file: ${filename}_${filenum}.csv\n";
$filenum++;
}
}
sub usage() {
print <<EOF;
PROGRAM NAME: Split .csv file
DESCRIPTION:
Takes a file and creates many small files out of the large file.
EXAMPLE USAGE: splitfile.pl filename.csv 300000 filename /dir/
PARAMETERS:
1. Source File: File name of the source file to partition.
2. Maximum number of lines per file: The number of lines per file.
3. Filename without the extension
4. Target location of split files ending with/
EOF
exit;
}
你明白你的代码在干什么吗?你自己写了吗? – simbabque
_best way_将_remember_(即_store_)第一个文件在全局变量的第一行(在'while'之外),并打印存储的行,只要你打开一个新文件。 – PerlDuck