2014-02-18 264 views
0
$i = system(bc 110^151%14351); 
print($i); 

嘿大家好,我正在嘗試使用系統調用來使用我的Linux機器上安裝的計算器。計算器的名稱是GNU bc,用於基本計算器。基本上它是計算方程的一種簡單方法。我可以很容易地從終端運行它,只需鍵入bc然後我想要等同的功能,在這種情況下,110提高到1513514351。問題是,我不知道perl太多,我不斷得到這個錯誤嘗試編寫perl腳本以使其自動化時,無法在沒有包或對象引用的情況下調用方法「bc」。我如何在Perl中調用系統調用,或者我允許這麼做?由於系統調用Perl

+0

'perldoc -f系統' – toolic

+0

術語「系統調用」通常指向OS內核的調用,如'read','write'或'ioctl'。混淆的是,對「系統」功能的調用不是「系統調用」。 –

+1

爲什麼在使用'system'和'bc'的時候可以用Perl來計算呢?你忘記在你的系統調用中引用引號,如果你想捕獲輸出,你應該使用反引號或'qx()'。 – TLP

回答

1

您同時使用Perl的system()功能和bc命令

你可以得到bc做你想從這樣的命令行:

$ echo '110^151%14351' | bc 
7355 

Perl的system函數返回一個數包含關於調用的命令的終止狀態的信息;你想要的命令的輸出。

從Perl中調用這個,這應該工作:

chomp($i = `echo '110^151%14351' | bc`) 

需要的chomp,因爲Perl反引號保留在命令的輸出其後的換行符。

但是,您可以使用Math::BigInt包在Perl本身中執行此操作。類型

perldoc Math::BigInt 

在您的shell提示符下獲取更多信息。

+0

謝謝,教會了我很多關於不同的電話。 – wheatfairies

+0

''和''有什麼區別? – wheatfairies

+0

@wheatfairies:'perldoc perlop'並搜索「Quote and Quote-like Operators」。 –