现有一超大.sql文件,将文件前N行或后N行输入到指定文件中: #!perl -w #将指定文件中的前N行或后N行输入到指定文件中 use 5.10.1; #输出文件的名称 say "Input your fineName whitch you want to extract in:"; chomp($_ = <STDIN>); $_ = changePath($_); #$_ = "C:/Perl/test/5_1/2.txt"; open LOG, ">>", $_; or die "I can't create it."; my $persion; my $lines; say "From first or last?(F/L)"; while(chomp($_ = <STDIN>)) { $persion = $_; if($persion eq "F") { last; } elsif($persion eq "L") { last; } say "warn param, please again."; } say "How many lines?(Please input a number)"; while(chomp($_ = <STDIN>)) { if(/^/d+$/) { $lines = $_; last; } say "warn param, please again."; } #待读取的文件名 say "The file name:"; chomp($_ = <STDIN>); $_ = changePath($_); push @ARGV, $_; #push @ARGV,"C:/Perl/test/5_1/abc.txt"; if($persion eq "F") { &writeFromFirst; } else { &writeFromLast; } #读取前N行 sub writeFromFirst { state $total = 0; foreach(<>) { if($total == $lines) { last; } $total += 1; print LOG $_; } } #读取后N行 sub writeFromLast { state $total = $lines; foreach (reverse <>) { if($total == 0) { last; } $total -= 1; print LOG $_; } } #将所有的 / 符号替换为 / sub changePath { $_ = shift @_; s#//#/#g; $_; } say "over."; close LOG;