Написал скрипт, который должен парсить фортрановские подпрограммы (subroutine) в отдельные файлы, подпихнул ему файл в 800kb и тут сабж! Для маленьких файлов такой "байды" не было. Вылетает, видимо, в ...~=s/../.. Это как нибудь лечится?
| Код | #!/usr/bin/perl -ws #use Data::Dumper; my $a_in=shift(@ARGV); #open GR, $a_in or die; #local $/; #my $t = <GR>; my $t=''; open (my $fh, $a_in) or die "could not open $a_in\n"; while (<$fh>) { my $nline = $_; # chomp($nline); $t =join('',$t,$nline); } close ($fh) or die "could not open $a_in";
print "file $a_in was read\n"; #print "t=$t\n";
my ($c1,$s,$sn,$sb,$e,$res); my $c = '[*|c|C]'; while ($t =~ s/(($c.*\n)*?)(\s+subroutine)\s+(\S*)((.*?\n+)*?)(\s+end)\n+//i) { $c1=$1; $s=$3; $sn=$4; $sb=$5; $e=$7; $res = $c1.$s.$sn.$sb.$e; print "Cut function $sn\n"; my $fh; open ($fh, '>'.$sn) or die "could not open $sn"; print $fh $res; close $fh; } print "Done\n"; print "The rest:-->", $t,"<--\n"; | |