Я получаю ошибку:Ошибка "паника: попытка скопировать освобожденный скаляр" при использовании Getopt :: Long
panic: attempt to copy freed scalar a121fb4 to a156be8 at ./p.pl line 13.
когда я запускаю следующую программу (p.pl
):
use warnings;
use strict;
use Getopt::Long qw(GetOptions);
main(@ARGV);
sub main {
GetOptions();
print "\@[email protected]\n";
my $arg=shift;
}
при использовании один или несколько аргументов командной строки, например p.pl 1
дает ошибку.
В чем причина этого?
Почему вы называете «GetOptions» без аргументов? Почему вы не проверяете возвращаемое значение «GetOptions»? Почему вы передаете '@ ARGV'' main'? В этом коде есть много сомнительных практик. – toolic
'shift' работает на' @ _' внутри под. – toolic
Какую версию Perl (и платформы) вы используете? Это работает без ошибок на Perl 5.16.3 в Linux Debian Wheezy. Обновление: я забыл добавить аргумент; Я тоже получаю эту ошибку. –