我有一個文本文件,製表符分隔,如下所示:Perl中,閱讀文本文件,保存列使用列的元素要打開其他文件
<這是一個標題
COL1 COL2 COL3
blablabla text1.txt blablabla
blablabla text2.txt blablabla
blablabla text3.txt blablabla
我希望能夠提取某些元素(列),在這種情況下,只能使用單詞text1.txt,text2.txt和text3.txt。我想稍後使用它們來打開這些名稱的文件。 到目前爲止,我有代碼:
#!/usr/bin/perl
use strict;
use warnings;
my @fields;
my ($column1, $column2, $column3);
my $text = "text.txt";
open(FILE, $text) or die "Could not read from $text, program halting.";
my @files;
while(<FILE>)
{
chomp;
/^</ and next;
/^\s*$/ and next;
/line*/ and next;
($column1, $column2, $column3) = split('\s', $_);
#PRINT ONE
#print $column2, "\t";
}
#PRINT TWO
print $column2, "\t";
close FILE;
如果我做了打印與#PRINT ONE評論,我得到了正確的版本,僅作爲輸出,與所有三個要素,但是當我嘗試將其保存在另一個變量或將其寫入文件,只保留「text3.txt」。 如果我在#PRINT TWO中執行打印,我只會得到一個元素,同樣的text3.txt。 我該如何學習?我已經嘗試了很多來自這個網站的代碼,但目前沒有結果。謝謝。
每次通過循環時,您都會爲列獲得新的數字,爲該行重寫前一行的數字(在'$ columnN'變量中)。保存它們:'push @ col2,$ column2;'(而不是註釋掉print);在循環之前聲明數組。循環後打印的值僅適用於最後一個數字。 – zdim
非常感謝。有效。 – Megiddo