In tutto il luogo, soprattutto in DBI, vedo che questo messaggio si presenta sempre. È confuso, perché la prima cosa che viene in mente è che gli argomenti che sto passando alla funzione sono impostati su undef (o qualcosa di simile), ma chiaramente non è il caso.
Dato un modulo e un corrispondente script ...
Modulo: ./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");
torno il messaggio di errore
Circa Non chiamare il metodo "tagliare" su un valore indefinito in linea ./text.pl 7.
Infatti, se chiamo $My::Module->notamethod("hello world");
dà un errore simile.
Cosa c'è di sbagliato nello script/modulo sopra?
Che cos'è davvero l'errore Can't call method “X” on an undefined value at ${SOMEFILE} line ${SOMELINE}
? Si riferisce al contesto della chiamata al metodo (passato qui per stampare) o al contesto degli argomenti?
tendo a mettere quelle di quando si scrive regex del perché mi piace mettere i commenti :) linea. Ho appena dimenticato di portarli fuori a titolo di esempio. – heymatthew
@The Demoni Advocate,/s e/m non hanno nulla a che fare con commenti in linea. Quello è/x. – cjm