% perl use warnings; use strict; use Data::Dumper; sub f { my @tmp = "list $_[0]\n" =~ /^list\s+(\w+)(?:,(\w+))*$/m; print(Dumper(\@tmp)); } f("foo"); f("foo,bar"); # Ctrl-D $VAR1 = [ 'foo', undef ]; $VAR1 = [ 'foo', 'bar' ];