use strict; use Data::Dumper; my %lexicon = ( foo => 'bar', baz => 'qux', ); foo(); foo(qw(one two three)); bar(); bar(qw(one two three)); baz(); baz(qw(one two three)); sub foo { my @lexlist = @_ ? @_ : sort keys %lexicon; # correct print "foo:\n", Dumper \@lexlist; } sub bar { my @lexlist = @_ || sort keys %lexicon; # incorrect print "bar:\n", Dumper \@lexlist; } sub baz { my @lexlist = (@_ or sort keys %lexicon); # incorrect print "baz:\n", Dumper \@lexlist; }