#!perl -T package Dongs; sub new; package main; use strict; use warnings; use Test::More tests => 56 * 4; my ($obj, $pkg, $cb, $x, @a); our $y; sub meh; { local $/ = "####"; while () { chomp; s/\s*$//; s/(.*?)$//m; my ($skip, $prefix) = split /#+/, $1; $skip = 0 unless defined $skip; $prefix = '' unless defined $prefix; s/\s*//; SKIP: { skip "$_: $skip" => 4 if eval $skip; local $SIG{__WARN__} = sub { die 'warn:' . join(' ', @_) }; eval "die qq{ok\\n}; $prefix; use indirect; $_"; is($@, "ok\n", "use indirect: $_"); eval "die qq{ok\n}; $prefix; no indirect; $_"; is($@, "ok\n", "no indirect: $_"); s/Hlagh/Dongs/g; eval "die qq{ok\\n}; $prefix; use indirect; $_"; is($@, "ok\n", "use indirect, defined: $_"); eval "die qq{ok\\n}; $prefix; no indirect; $_"; is($@, "ok\n", "no indirect, defined: $_"); } } } __DATA__ $obj = Hlagh->new; #### $obj = Hlagh->new(); #### $obj = Hlagh->new(1); #### $obj = Hlagh->new(q{foo}, bar => $obj); #### $obj = Hlagh -> new ; #### $obj = Hlagh -> new ( ) ; #### $obj = Hlagh -> new ( 1 ) ; #### $obj = Hlagh -> new ( 'foo' , bar => $obj ); #### $obj = Hlagh -> new ; #### $obj = Hlagh -> new ( ) ; #### $obj = Hlagh -> new ( 1 ) ; #### $obj = Hlagh -> new ( "foo" , bar => $obj ); #### $obj = new->new; #### $obj = new->new; # new new #### $obj = new->newnew; #### $obj = newnew->new; #### $obj = Hlagh->$cb; #### $obj = Hlagh->$cb(); #### $obj = Hlagh->$cb($pkg); #### $obj = Hlagh->$cb(sub { 'foo' }, bar => $obj); #### $obj = $pkg->new ; #### $obj = $pkg -> new ( ); #### $obj = $pkg -> new ( $pkg ); #### $obj = $pkg -> new ( qr/foo/, foo => qr/bar/ ); #### $obj = $pkg -> $cb ; #### $obj = $pkg -> ($cb) (); #### $obj = $pkg->$cb( $obj ); #### $obj = $pkg->$cb(qw/foo bar baz/); #### $obj = new { $x }; #### $obj = new { $x } (); #### $obj = new { $x } qq/foo/; #### $obj = new { $x }(qw/bar baz/); #### meh; #### meh $_; #### meh $x; #### meh $x, 1, 2; #### meh $y; #### meh $y, 1, 2; #### $] < 5.010 # use feature 'state'; state $z meh $z; #### $] < 5.010 # use feature 'state'; state $z meh $z, 1, 2; #### print; #### print $_; #### print $x; #### print $x "oh hai\n"; #### print $y; #### print $y "dongs\n"; #### $] < 5.010 # use feature 'state'; state $z print $z; #### $] < 5.010 # use feature 'state'; state $z print $z "hlagh\n"; #### print STDOUT "bananananananana\n"; #### $x->foo($pkg->$cb) #### $obj = "apple ${\(new Hlagh)} pear" #### $obj = "apple @{[new Hlagh]} pear" #### exec $x $x, @a; #### exec { $a[0] } @a; #### system $x $x, @a; #### system { $a[0] } @a;