【问题标题】:Script for getting memory information [closed]获取内存信息的脚本 [关闭]
【发布时间】:2013-04-24 12:43:01
【问题描述】:
 #! usr/bin/perl
    sub memoryInfo
    {
        print "Inside memory info \n";
        @memoryInfo = qx(free -m);
        foreach (@memoryInfo)
        {
            print "$_\n";
        }

    }

    &memoryInfo;

这是我的 Perl 程序,它不工作。我需要一些信息,例如总内存、总物理内存、总使用内存、总缓存内存、总交换内存和总使用交换内存。

谁能帮帮我? 提前致谢。

【问题讨论】:

  • 您的 Perl 路径错误。缺少/。将其更正为 #!/usr/bin/perl
  • 请不要在子调用中使用&;调用 sub 的现代方式只是 memoryInfomemoryInfo()
  • 另外,每当您发布问题时,请准确解释它是如何“不工作”的。这是什么意思:不编译?运行但没有达到您的预期?等
  • 添加了,但我无法获得输出。
  • 感谢@dan1111,我是 perl 新手。

标签: linux perl unix


【解决方案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();

【讨论】:

  • 谢谢,但我收到错误:内部内存信息无法执行“免费”:variables.pl 第 9 行没有这样的文件或目录。
  • 谢谢 :) 它现在正在运行
【解决方案2】:

你的程序运行良好,只要你调用它

perl meminfo.pl

当变成可执行文件时,你应该会得到如下错误:

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

表示你的shebang(以#!开头的第一行是错误的...

此外,您会在输出中注意到额外的换行符,因为数组中的每一行都已经有一个换行符...

终于:

  • 使用严格和警告
  • 不要用& 调用subs
  • 避免变量中的驼峰式大小写

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

#!/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;

【讨论】:

  • 我收到错误:知道为什么吗? bash-3.2# perl variables.pl Inside memory info Can't exec "free": No such file or directory at variables.pl line 9.
  • 这个错误与 Perl 无关。您没有安装 free 或在您的 PATH 中。安装它,更改您的PATH 或使用包含目录的全名...
  • 现在正在运行,非常感谢:)
猜你喜欢
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 2021-11-28
  • 2013-03-06
  • 2017-03-26
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
相关资源
最近更新 更多