我使用Perl WWW::Mechanize
包來從一些網站獲取和處理數據。通常我的行動方式如下:在寫入文件之前處理變量中的文本
取網頁
$mech->get("$url");
保存在一個變量(BTW的,我不知道這是否是正確的方式對網頁內容保存標中的文本的這個量的,據我所知,應該是用於單個值)
my $list = $mech->content();
使用我創建的子例程將變量的內容寫入文本文件。 (該
writetoFile
子程序包括一些更多的功能,如路徑和現有的文件驗證..)writeToFile("$filename.tmp","$path",$list);
通過建立一個附加文件的處理在先前步驟中創建的文件的文本和保存處理的內容有(然後刪除最初的臨時文件)。
我想知道什麼,是是否有可能存儲在文件中的文本之前執行的處理,直接在$list
變量裏面?整個過程如預期的那樣工作,但是我並不喜歡它背後的邏輯,而且它也有點低效,因爲我必須多次重寫相同的文件。
編輯: 只是爲了給我更多的信息,當我處理變量的內容後我實際上是什麼。因此,在這種情況下,我從網站獲取的數據實際上是由空行分隔的項目列表,第一行與我無關。所以我在做什麼,而處理這個數據是兩兩件事:
- 取出空(CRLF)行
- 刪除第一行,如果它包括一個特定的文本。
理想情況下,我希望將已處理的列表(未刪除空格和第一行)保存在文件中,而不會在途中創建任何其他文件。爲了保存文件,我想用writeToFile
子(我寫),因爲它也對這樣的文件是否已經存在執行驗證(如果一個文件將在最終處理前被保存 - 在writeToFile
總是會改寫現有的文件)。
,真希望是有道理的。
當然是。你究竟在管理什麼? – Mat 2013-03-24 11:10:08
@Mat嗨。我的問題似乎是逐行讀取可變內部的文本,並根據某些條件執行處理每行文本,然後將輸出保存在某處..就像我用文件做的那樣。用I文件,我讀取每一行,檢查每一行,並將處理後的輸出寫入另一個文件。謝謝。 – 2013-03-24 11:16:23
看看這裏的答案:http://stackoverflow.com/questions/1445426/how-can-i-process-a-multi-line-string-one-line-at-a-time-in-perl-with -use-strict,特別是http://stackoverflow.com/a/1445732/635608 – Mat 2013-03-24 11:19:43