Kod Nazwa plikuróżnica między ./test.pl i Perl test.pl
#!/usr/bin/perl -I/root/Lib/
use Data::Dumper;
print Dumper \@INC;
Powyższy kod jest test.pl a uprawnienie to 755.
Kiedy używam programu używając/usr/bin/perl test.pl plik wyjściowy @INC zawiera "/ root/Lib" na końcu. To jest jak wejście do @INC.
/usr/bin/perl test.pl Wyjście
$VAR1 = [
'/etc/perl',
'/usr/local/lib/perl/5.10.0',
'/usr/local/share/perl/5.10.0',
'/usr/lib/perl5',
'/usr/share/perl5',
'/usr/lib/perl/5.10',
'/usr/share/perl/5.10',
'/usr/local/lib/site_perl',
'.',
'/root/Lib/'
];
Ale kiedy używam programu za pomocą ./test.pl wyjście @ INC zawiera "/ root/lib /" zawiera pierwszy a także koniec. To jest jak niezmienne i pchnięcie.
./test.pl wyjście
$VAR1 = [
'/root/Lib/',
'/etc/perl',
'/usr/local/lib/perl/5.10.0',
'/usr/local/share/perl/5.10.0',
'/usr/lib/perl5',
'/usr/share/perl5',
'/usr/lib/perl/5.10',
'/usr/share/perl/5.10',
'/usr/local/lib/site_perl',
'.',
'/root/Lib/'
];
Więc chcę wiedzieć, jaka jest różnica między ./test.pl i/usr/bin/perl test.pl?
+1 to zaskakujące zachowanie, badanie ... – msw
jeśli zrobiłeś perl -I/root/Lib test.pl to byłoby tak samo. Shebang na linii 1 jest używany jako polecenie, gdy robisz ./test.pl – KeepCalmAndCarryOn
Curiouser i curiouser: jeśli 'L' to'/root/lib', otrzymuję wyjście 'L, L, ...' dla shebangu wykonanie i 'L, ...' dla wywołania/usr/bin/perl. Jakiego systemu operacyjnego i (jeśli dotyczy) pakietu perlowego używasz? – msw