use strict; use warnings; my @foo; push @foo, 1; print scalar @foo, "\n"; # output: 1 push @foo, 'abc' =~ /abc/; print scalar @foo, "\n"; # output: 2 push @foo, 'abc' =~ /abcd/; print scalar @foo, "\n"; # output: 2 - nothing added to @foo?! push @foo, ''; print scalar @foo, "\n"; # output: 3 push @foo, 0; print scalar @foo, "\n"; # output: 4 push @foo, undef; print scalar @foo, "\n"; # output: 5 @foo = (); print "\n"; push @foo, (1); print scalar @foo, "\n"; # output: 1 push @foo, ('abc' =~ /abc/); print scalar @foo, "\n"; # output: 2 push @foo, ('abc' =~ /abcd/); print scalar @foo, "\n"; # output: 2 - nothing added to @foo?! push @foo, (''); print scalar @foo, "\n"; # output: 3 push @foo, (0); print scalar @foo, "\n"; # output: 4 push @foo, (undef); print scalar @foo, "\n"; # output: 5 @foo = (); my $bar; print "\n"; $bar = 1; push @foo, $bar; print scalar @foo, "\n"; # output: 1 $bar = 'abc' =~ /abc/; push @foo, $bar; print scalar @foo, "\n"; # output: 2 $bar = 'abc' =~ /abcd/; push @foo, $bar; print scalar @foo, "\n"; # output: 3 - this time its been added to @foo $bar = ''; push @foo, $bar; print scalar @foo, "\n"; # output: 4 $bar = 0; push @foo, $bar; print scalar @foo, "\n"; # output: 5 $bar = undef; push @foo, $bar; print scalar @foo, "\n"; # output: 6