Я был бы признателен, если бы кто-нибудь сказал мне, как я могу изменить позиционные аргументы на именованные аргументы в этом коде Perl, пожалуйста?
#!/usr/bin/perl -w
sub diskUsageMon {
my ($hash_ref, $array_ref) = @_;
unless ( open(DF, "df -kh 2>&1 |") ) {
chomp $!;
push $array_ref, "Failed to start command df", "Reason: $!";
return 1;
}; # Unless
while ( <DF> ) {
next if /^Filesystem/;
@df = split;
my ($mount, $use) = @df[5,4];
$hash_ref->{$mount} = $use;
}; # While
close DF;
return 0;
}; # sub
#---------------------------------------------------------#
%hash_ref = ();
@array_ref = ();
if ( &diskUsageMon(\%hash_ref, \@array_ref) ) {
die "Error detected!\n", "Reason: ", join("\n", @array_ref), "\n";
};
chomp $!
? - person Borodin   schedule 19.09.2018@_
хешу в вашей функции. Вот и все. Обратите внимание, что имена переменных, такие как$array_ref
и$hash_ref
, действительно сбивают с толку, потому что они ничего не говорят о типе данных, которые в них содержатся. По тому, как используется переменная, очевидно, что это ссылка на массив, но что она содержит? Если вам нужны позиционные параметры, вам нужно подумать об этом. - person simbabque   schedule 20.09.2018