use strict; use warnings; use Getopt::Long; my $foo = undef; GetOptions( 'foo:s' => \$foo, ); my $sn = $ARGV[0]; if (not defined $foo) { print "foo option not used at all \n"; } elsif (not length $foo) { print "foo option used with no optional value \n"; } else { print "foo option used with optional value: $foo \n"; }