Ho il seguente script in esecuzione su Perl 5.10.1:chiamante di Perl() funzione che restituisce riga errata numero
#!/usr/bin/perl
use strict;
use warnings;
foreach(my $x =0 ; $x < 1; $x++) { # Line 5
print_line(); # Line 6
}
sub print_line {
print "Function call from line: " . [caller(0)]->[2] . "\n";
}
Nonostante la chiamata alla subroutine proveniente dalla linea 6, lo script emette il numero di riga dell'inizio dello stile di C per la dichiarazione:
Function call from line: 5
la cosa veramente strana è che se mi passi una dichiarazione a caso in uno dei riga vuota in stile C per ciclo, caller
restituisce il numero di riga corretto:
#!/usr/bin/perl
use strict;
use warnings;
foreach(my $x =0 ; $x < 1; $x++) {
my $x = 3;
print_line(); # Line 7
}
sub print_line {
print "Function call from line: " . [caller(0)]->[2] . "\n";
}
Lo script precedente uscite correttamente:
Function call from line: 7
E 'una specie di bug o c'è qualcosa che posso fare per ottenere caller
di riportare con precisione il numero di riga?
Interessante - sì, sembra essere il caso. Sembra che restituisca il numero di linea del "loop". La macro '__LINE__' può aiutare a risolvere i problemi. – Sobrique