use temp1;
use warnings;
use strict;
temp1::init();
use temp1;
use warnings;
use strict;
temp1::init();
print "Calling work1: " . temp1::work1( '$var = 3' ) . "\n";
print "Calling work2: " . temp1::work2( '$var++' ) . "\n";
print "Calling work3: " . temp1::work3( '$var++' ) . "\n";
print "Work3 again: " . temp1::work3( '++$var' ) . "\n";
print "Calling work4: " . temp1::work4( '$var++' ) . "\n";
####
package temp1;
use strict;
use warnings;
my $var;
sub init { $var = 101 }
sub work1 { return eval shift; }
sub work2 { my $foo = shift; return eval $foo; $var }
sub work3 { return eval $_[0]; }
sub work4 { eval $var; }
1;
####
Calling work1: 3
Calling work2: 101
Calling work3: 3
Work3 again: 5
Calling work4: 102