Ключевое слово require
хранит файлы, которые уже загружены в хэш %INC
.
perl -MData::Dumper -E 'say Dumper \%INC'
$VAR1 = {
'Data/Dumper.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/x86_64-linux/Data/Dumper.pm',
'constant.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/constant.pm',
'feature.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/feature.pm',
'strict.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/strict.pm',
'warnings/register.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/warnings/register.pm',
'Exporter.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/Exporter.pm',
'XSLoader.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/XSLoader.pm',
'bytes.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/bytes.pm',
'warnings.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/warnings.pm',
'Carp.pm' => '/home/simbabque/perl5/perlbrew/perls/perl-5.26.1/lib/5.26.1/Carp.pm'
};
При повторной попытке require $same_filename
оно будет смотреть на $INC{$same_filename}
.Если он существует, он прерывается.
Если вы хотите повторно запустить тот же файл, вы можете использовать вместо него ключевое слово do
, которое просто загружает и выполняет файл.Это будет перечитывать файл с диска каждый раз .
sub red {
our $var;
print "try : ";
do "./3.pl"
}
Имейте в виду, что это очень плохая практика .Вы должны переместить этот код в функцию и передать лексические переменные.