use 5.014;
use warnings;
package Temp;
use parent 'File::Temp';
sub new {
my $self = shift;
$self-> SUPER::new( DIR => '.' )
}
sub DESTROY {
my $self = shift;
say "Destruction during ", ${^GLOBAL_PHASE};
$self-> SUPER::DESTROY
}
package main;
use File::Copy;
sub foo { my $h = Temp-> new }
die unless -f 'x'; # this file must exist
{
copy 'x', my $fn1 = Temp-> new-> filename or die;
copy 'x', my $fn2 = do { Temp-> new }-> filename or die;
copy 'x', my $fn3 = do { my $h = Temp-> new }-> filename or die;
copy 'x', my $fn4 = foo-> filename or die;
say 1 if -f $fn1;
say 2 if -f $fn2;
say 3 if -f $fn3;
say 4 if -f $fn4;
say "End of scope";
}
say "End of file";
__END__
Destruction during RUN
Destruction during RUN
Destruction during RUN
3
End of scope
Destruction during RUN
End of file
####
copy 'x', my $fn3 = do { { my $h = Temp-> new } }-> filename or die;
####
$_ = "Hi";
do { local $_ = "Hello" };
print