Comme indiqué dans perlmodlib, vous devriez commencer le nom de votre module avec une lettre majuscule:
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).
Une façon d'appeler un sous défini dans un autre paquet est de se qualifier pleinement le nom de ce sous lorsque vous l'appelez:
SettingsGeneral::printScreen "important message\n";
Si tout ce que vous voulez est une référence à printScreen
, saisir la barre oblique inverse opérateur
my $subref = \&SettingsGeneral::printScreen;
et l'appeler l'un des
&$subref("one\n");
&{$subref}("two\n");
$subref->("three\n");
Vous pouvez créer un alias dans votre forfait actuel:
*printScreen = \&SettingsGeneral::printScreen;
printScreen("another urgent flash\n");
Passer les parenthèses (nécessaire parce que le sous dans le paquet en cours n'a pas été connu au moment de la compilation) en écrivant:
use subs 'printScreen';
*printScreen = \&SettingsGeneral::printScreen;
printScreen "the sky is falling!\n";
Le Module Exporter peut faire ce travail de garde pour vous:
SettingsGeneral.pm:
package SettingsGeneral;
use Exporter 'import';
our @EXPORT = qw/ printScreen /;
sub printScreen {
print $_[0];
}
1;
principale:
#! /usr/bin/perl
use warnings;
use strict;
use SettingsGeneral;
printScreen "foo!\n";
dans votre premier exemple, 'Impr ("un autre flash Urgen \ n");' a besoin parens –
beaucoup thx! appris quelque chose;) – Pmarcoen
@Eric Merci! Fixé. –