Mam trochę modułu i chcę utworzyć alias dla jakiegoś sub. Oto kod:Pierwsze "... użyte tylko raz: możliwe literówki" ostrzeżenie podczas aliasingu podprogramów
#!/usr/bin/perl
package MySub;
use strict;
use warnings;
sub new {
my $class = shift;
my $params = shift;
my $self = {};
bless($self, $class);
return $self;
}
sub do_some {
my $self = shift;
print "Do something!";
return 1;
}
*other = \&do_some;
1;
To działa, ale produkuje kompilacji ostrzeżenie
Name "MySub :: inny" używany tylko raz: Możliwa literówka w /tmp/MySub.pm linii 23.
Wiem, że mogę po prostu wpisać no warnings 'once';
, ale czy jest to jedyne rozwiązanie? Dlaczego Perl ostrzega mnie? Co ja robię źle?
co z 'sub other {do_some (@_);}' –
Otrzymuję ostrzeżenie tylko wtedy, gdy próbuję wykonać moduł * bezpośrednio *, ale nie otrzymam żadnego ostrzeżenia, jeśli po prostu użyję modułu w scenariusz. – doubleDown
tak, to jest rozwiązanie, ale w perldoc '* other = \ & do_some;' jest zalecane do robienia aliasów podprogramów, i zastanawiałem się kiedy dostaję to ostrzeżenie – Suic