2013-04-24 59 views
-5
#! usr/bin/perl 
    sub memoryInfo 
    { 
     print "Inside memory info \n"; 
     @memoryInfo = qx(free -m); 
     foreach (@memoryInfo) 
     { 
      print "$_\n"; 
     } 

    } 

    &memoryInfo; 

這是我的Perl程序,它不起作用。我需要一些信息,如總內存,總物理內存,總使用內存,總高速緩存內存,總交換內存和總使用交換內存。獲取內存信息的腳本

任何人都可以幫助我嗎? 在此先感謝。

+5

你的Perl路徑是錯誤的。缺少'/'。將它修改爲#!/ usr/bin/perl – 2013-04-24 12:46:14

+3

請不要在子呼叫中使用&&;現在調用sub的方法只是'memoryInfo'或'memoryInfo()'。 – 2013-04-24 12:47:45

+3

此外,每當你發佈一個問題,請解釋它是如何「不工作」。這是什麼意思:不編譯?運行,但沒有達到你的期望?等 – 2013-04-24 12:48:41

回答

1

這工作得很好。

#!/usr/bin/perl 

use strict; 
use warnings; 

sub memoryInfo 
{ 
    print "Inside memory info \n"; 
    my @memoryInfo = qx(free -m); 
    foreach (@memoryInfo) 
    { 
     print "$_\n"; 
    } 

} 

memoryInfo(); 
+0

謝謝,但我得到錯誤:內存信息 不能執行「免費」:沒有這樣的文件或目錄在variables.pl第9行。 – 2013-04-24 12:57:42

+0

謝謝:)它現在運行 – 2013-04-24 14:06:03

1

你的程序運行良好,爲您提供

perl meminfo.pl 

的時候調用它設置爲可執行,你應該得到這樣的錯誤:

./meminfo.pl 
bash: ./meminfo.pl: usr/bin/perl: bad interpreter: No such file or directory 

這表明你的shebang(第一行#!開頭是錯的同時,你會發現在輸出額外的新行,因爲你的數組中的每一行已經從本身就是一個換行符...

最後:

  • 使用嚴格和警告
  • 不叫在變量&
  • 避免駱駝潛艇

你的程序的工作版本可能是:

#!/usr/bin/perl 

use strict; 
use warnings; 

sub memoryInfo { 
    print "Inside memory info \n"; 

    my @memoryinfo = qx(free -m); 
    chomp @memoryinfo; 

    foreach (@memoryinfo) { 
     print "$_\n"; 
    } 
} 

memoryInfo; 
+0

我得到錯誤:任何想法爲什麼? bash-3.2#perl variables.pl 內部內存信息 不能執行「free」:在variables.pl第9行沒有這樣的文件或目錄。 – 2013-04-24 13:00:52

+1

這個錯誤與Perl無關。你沒有安裝'free'或者你的'PATH'。要麼安裝它,改變你的PATH或使用包括目錄的全名... – pavel 2013-04-24 13:04:10

+0

現在它正在運行,非常感謝:) – 2013-04-24 14:05:42