#!/usr/bin/env perl
use strict;
use warnings;
print 1;
BEGIN {
print 2;
}
print 3;
213
#!/usr/bin/env perl
use strict;
use warnings;
BEGIN {
print $var;
}
my $var = 'foo';
Global symbol "$var" requires explicit package name at /Users/yuki.kokubun/Desktop/perl-quiz/quiz1/quiz1.pl line 6.
BEGIN not safe after errors--compilation aborted at /Users/yuki.kokubun/Desktop/perl-quiz/quiz1/quiz1.pl line 7.
#!/usr/bin/env perl
use strict;
use warnings;
use Foo;
BEGIN {
print "main BEGIN\n";
}
print "main\n";
use Bar;
package Foo;
use strict;
use warnings;
print "Foo\n";
BEGIN {
print "Foo BEGIN\n";
}
1;
package Bar;
use strict;
use warnings;
print "Bar\n";
BEGIN {
print "Bar BEGIN\n";
}
1;
Foo BEGIN
Foo
main BEGIN
Bar BEGIN
Bar
main
package Foo;
use strict;
use warnings;
use Bar qw/BAR/;
sub say {
print BAR;
print Bar::BAR;
}
1;
package Bar;
use strict;
use warnings;
use Exporter qw/import/;
our @EXPORT_OK = qw/BAR/;
use constant BAR => 'hello!'; # use constant BAR パターン
sub BAR { 'hello!' } # sub BAR パターン
sub BAR () { 'hello!' } # sub BAR () パターン
1;
#! /usr/bin/env perl
use strict;
use warnings;
use Test::MockModule;
my $mocked_bar = Test::MockModule->new('Bar');
$mocked_bar->mock('BAR', sub () { 'bye!' }); # use constant BAR パターンまたは sub BAR () パターン
$mocked_bar->mock('BAR', sub { 'bye!' }); # sub BAR パターン
use Foo; # use Foo パターン
require Foo; # require Foo パターン
Foo::say();
use constant BAR パターン |
sub BAR パターン |
sub BAR () パターン |
|
---|---|---|---|
use Foo パターン |
hello!hello! |
hello!bye! |
hello!hello! |
require Foo パターン |
bye!bye! |
bye!bye! |
bye!bye! |