#! perl use strict; use warnings; use Getopt::Long; my ($name, $long); GetOptions ( 'name=s' => \&name_handler, long => \$long, ) or die "Error in command line arguments\n"; printf "Name is '%s', long is %s\n", $name, $long ? 'set' : 'not set'; sub name_handler { my (undef, $n) = @_; if ($n =~ /^--/) { die "Option 'name' requires an argument\n"; } else { $name = $n; } }