2013-04-24 3 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 –

+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

Спасибо, но я получаю сообщение об ошибке: Информация о внутренней памяти Невозможно выполнить «бесплатно»: нет такого файла или каталога в строке переменных.pl 9. –

+0

Спасибо :) его работает сейчас –

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 Информация о внутренней памяти Невозможно выполнить «бесплатно»: нет такого файла или каталога в строке variables.pl 9. –

+1

эта ошибка не имеет ничего общего с Perl. у вас нет 'free' или' 'PATH'. Либо установите его, измените свой 'PATH', либо используйте полное имя, включая каталог ... – pavel

+0

Теперь он работает, спасибо много :) –

Смежные вопросы