2013-04-24 32 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