Perl: выводит только одну строку
Это третий вопрос того же проекта: я пытался найти строку «Distance:» из «pairAngles.txt» в каждой из более чем 2000 подкаталогов; имена подкаталогов получены из файла CSV. После передачи eol => $ / в Text :: CSV_XS-> new AND использовать $ csv-> скажем, результат будет по-прежнему одной строкой ...
#!/usr/bin/perl -w
use strict;
use warnings;
use File::Find;
use Text::CSV_XS;
my @pairs=();
my @result=();
my $c1;
my $in;
my $out;
my $pairs;
my $dist = "";
my $dir = "/home/avabelieve/aaPROJECT/helicalPair_ax/selectedPairs/renumberedPdb/clusterPairs-1.25-12-05_windows.12.resle3.2A.RMSD1.3/oligomerAngle";
my $cluster = "clst1.csv";
open ($in, $cluster) || die "cannot open \"$cluster\": $!";
my $cU = "clst1Updated.csv";
open ($out, ">$cU") || die "cannot open '$cU' $!";
my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1, eol => $/ });
while ($c1 = <$in>) {
chomp $c1;
push @pairs, $c1;
}
foreach $c1 (@pairs) {
find (\&Matches, "$dir/$c1");
sub Matches {
open ($pairs, "pairsAngles.txt") or die "$!";
while (my $dist = <$pairs>) {
if ($dist =~ m/Distance: /) {
chomp $dist;
push (@result, "$dist\n");
}
}
}
}
chdir "..";
if (not $csv->eof) {
$csv->error_diag();
}
$csv->say ($out, [@pairs, @result]);
close $out or die "$!";