Überall, besonders in DBI, sehe ich diese Nachricht die ganze Zeit auftauchen. Es ist verwirrend, denn das erste, was mir in den Sinn kommt, ist, dass die Argumente, die ich an die Funktion übergebe, auf undef (oder etwas Ähnliches) gesetzt werden, aber das ist eindeutig nicht der Fall.
ein Modul und ein entsprechendes Skript gegeben ...
Modul: ./lib/My/Module.pm
package My::Module;
use strict;
use warnings;
sub trim {
my $str = shift;
$str =~ s{ \A \s+ }{}xms; # remove space from front of string
$str =~ s{ \s+ \z }{}xms; # remove space from end of string
return $str;
}
Script: ./test.pl
#!/usr/bin/perl
use strict;
use warnings;
use My::Module qw(trim);
print $My::Module->trim(" \t hello world\t \t");
I Nachricht
zurück den FehlerCa nicht nennen Methode „trimmen“ auf einen nicht definierten Wert an ./text.pl Linie 7.
Infact, wenn ich rufe $My::Module->notamethod("hello world");
es einen ähnlichen Fehler gibt.
Was ist los mit dem obigen Skript/Modul?
Was ist das für ein Fehler Can't call method “X” on an undefined value at ${SOMEFILE} line ${SOMELINE}
wirklich zu sagen? Bezieht sich dies auf den Kontext des Methodenaufrufs (hier zum Drucken übergeben) oder auf den Kontext der Argumente?
Ich neige dazu, diese beim Schreiben von Regex zu setzen, weil ich gerne Kommentare inline :). Ich habe nur vergessen, sie aus Gründen des Beispiels herauszunehmen. – heymatthew
@Deemons Advocate,/s und/m haben nichts mit Inline-Kommentaren zu tun. Das ist/x. – cjm