Hallo Perlhacker!
1. Config::IniFiles
Ich experimentiere ein bisschen mit genanntem Modul und beobachte dabei folgendes:
Inhalt File »ini.ini«:
[age]
of_captain = 42
#eof
Testcase 1 (Config::IniFiles direkt im Perl-Skript):
#!/usr/bin/perl -w
use strict;
use CGI qw(header);
use Config::IniFiles;
my $ini = '/pfad/zu/meiner/datei/ini.ini';
my $cfg = new Config::IniFiles(-file => $ini);
my $age = $cfg->val('age','of_captain');
print header();
print $age;
Ausgabe: 42, Error-Log bleibt leer.
Testcase 2 (Config::IniFiles wird in einem weiteren Modul eingebunden):
#!/usr/bin/perl -w
use strict;
use CGI qw(header);
use Test::Modul;
my $age = new Test::Modul;
print header();
print $age->age;
Test/Modul:pm
package Test::Modul;
use strict;
use Config::IniFiles;
my $ini = '/pfad/zu/meiner/datei/ini.ini';
my $cfg = new Config::IniFiles(-file => $ini);
my $age = $cfg->val('age','of_captain');
## object constructor
sub new {
my $pkg = shift;
my $modul = bless { }, $pkg;
return $modul;
}
sub age {
return $age;
}
1;
Ausgabe: 42, Error-Log enthält: [Wed Feb 18 11:33:25 2009] Symbol.pm: Name "Config::IniFiles::/pfad/zu/meiner/datei/ini.ini" used only once: possible typo at C:/Perl/lib/Symbol.pm line 135.
Fragen: Warum? Wie kann ich die Warnung vermeiden?
2. Vergessen wir jetzt Config::IniFiles und die Warnung und ändern Testcase 2 wie folgt:
my $age = new Test::Modul;
my $test = "age";
print header();
print $age->$test;
Ausgabe: 42
Ich war überrascht, dass es geht. Das wäre für ein Skript, an das ich arbeite, praktisch.
Aber: Übersehe ich dabei irgendeine Falle, in die ich mit solchen Methodenaufrufen
tappen könnte? Das funzt™ nämlich auch mit Methoden, die Parameter erwarten:
my $other = new Anderes::Modul;
my $test = "name_der_methode_die_einen_parameter_will";
print header();
print $other->$test('parameter');
Viele Grüße aus Frankfurt/Main,
Patrick
_ - jenseits vom delirium - _
Diblom [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
J'ai 10 ans! | Achtung Agentur! | Nichts ist unmöglich? Doch! | Heute schon gegökt?