Como se indica en perlmodlib, debe comenzar el nombre de su módulo con una letra mayúscula:
Perl informally reserves lowercase module names for 'pragma' modules like integer
and strict
. Other modules normally begin with a capital letter and use mixed case with no underscores (need to be short and portable).
Una forma de llamar a un sub definido en otro paquete es calificar totalmente el nombre de esa sub cuando usted lo llama:
SettingsGeneral::printScreen "important message\n";
Si lo que quieres es una referencia a printScreen
, agarrarlo con la barra invertida operador
my $subref = \&SettingsGeneral::printScreen;
y llamarlo con uno de
&$subref("one\n");
&{$subref}("two\n");
$subref->("three\n");
Se puede crear un alias en su paquete actual:
*printScreen = \&SettingsGeneral::printScreen;
printScreen("another urgent flash\n");
Saltar los paréntesis (necesario porque el sub en el paquete actual no se conoce en tiempo de compilación) escribiendo:
use subs 'printScreen';
*printScreen = \&SettingsGeneral::printScreen;
printScreen "the sky is falling!\n";
El Exporter módulo puede hacer este trabajo de custodia para usted:
SettingsGeneral.pm:
package SettingsGeneral;
use Exporter 'import';
our @EXPORT = qw/ printScreen /;
sub printScreen {
print $_[0];
}
1;
principal:
#! /usr/bin/perl
use warnings;
use strict;
use SettingsGeneral;
printScreen "foo!\n";
en su primer ejemplo, 'printscreen ("flash de otra Jürgen \ n");' necesita parens –
mucho thx! aprendí algo;) – Pmarcoen
@Eric ¡Gracias! Fijo. –