1
我試圖從超過2,000個子目錄中的「pairsAngles.txt」中grep字符串「Distance:」;子目錄的名稱是從csv文件中獲取的。
然而,下面的代碼只給我以CSV格式輸出的一個巨大的單一的線,我連與文本編輯器打開:Perl:在列中輸出數組
my @pairs=qw();
my @result=();
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 });
while (my $c1 = <$in>) {
chomp $c1;
push @pairs, $c1;
foreach $c1 (uniq @pairs) {
find (\&Matches, "$dir/$c1");
sub Matches {
open ($pairs, "oligomerAngles.out") or die "$!";
while (my $dist = <$pairs>) {
if ($dist =~ m/Distance: /){
chomp $dist;
push (@result, "$dist\n");
@result = split ": ", $dist;
}
}
} } chdir "..";
if (not $csv->eof) {
$csv->error_diag();
}
$csv->print ($out, [uniq @pairs, @result]);
}
close $out or die "$!";
非常感謝!有效!!!但現在我有另一個問題: http://stackoverflow.com/questions/37148048/perl-redundancy-due-to-restart-in-foreach –