2011-06-20 27 views
2

我發現這個perl腳本here這似乎將工作爲我的目的。它打開一個Unicode文本文件並讀取每一行,以便可以運行一個命令。但我無法弄清楚如何在每一行上運行某個ICU命令。有人可以幫我嗎?我得到的錯誤是(largefile是腳本名稱): 語法錯誤在./largefile第11行,在「/」附近。在./largefile線 搜索模式沒有終止11Perl腳本通過每行讀取文件行並在每行上運行命令

#!/usr/bin/perl 

use strict; 
use warnings; 

my $file = 'test.txt'; 
open my $info, $file or die "Could not open $file: $!"; 

while(my $line = <$info>) {  
do 
LD_LIBRARY_PATH=icu/source/lib/ ./a.out "$line" >> newtext.txt 
done 
} 

close $info; 

基本上,我想打開一個大的文本文件,然後運行命令(通常在命令行中運行...我想我怎麼稱呼這perl腳本是問題,但我不知道如何解決它)每行上的「LD_LIBRARY_PATH = icu/source/lib/./a.out」$ line「>> newtext.txt」,以便「newtext。然後在腳本處理完所有行後填充「txt」。 ICU部分正在打破高棉的言論。

任何幫助將不勝感激!我不是一個程序員......謝謝!

+0

是此命令假定從命令提示符下運行或終端? –

+0

我通常在Ubuntu – Nathan

+1

aha的終端裏面運行LD_LIBRARY_PATH = icu/source/lib/./a.out「something here」>> newtext.txt,然後把整個命令放到系統中,像系統(「LD_LIBRARY_PATH = icu/source/lib/./a.out $ line >> newtext.txt「); PS:分號很重要,引號也是如此 –

回答

1

爲了執行終端的命令,該命令需要在系統(),因此更改爲

system("LD_LIBRARY_PATH=icu/source/lib/ ./a.out $line >> newtext.txt"); 
+0

反引號或qx //做同樣的事情嗎? – Jon

+0

backticks返回運行命令的輸出。如果你不需要輸出,那麼使用system()。檢查系統的返回值也是很好的。或者使用http://search.cpan.org/perldoc?IPC::System::簡單或「autodie」來獲取錯誤。 –

1

你嘗試過反引號:

while (my $line = <$info>) { 
    `LD_LIBRARY_PATH=icu/source/lib/ ./a.out "$line" >> newtext.txt` 
    last if $. == 2; 
}