Пожалуйста, рассмотрите возможность использования Getopt :: Long вместо собственного разбора аргумента
http://perldoc.perl.org/Getopt/Long.html
use Getopt::Long;
GetOptions
(
'dir=s' => \$dir,
) or die ("Couldnot process arguments");
, в этом случае dir будет иметь каталог, независимо от того, делает ли пользователь
yourscript.pl -dir = foo
yourscript.pl -dir "foo"
yourscript.pl -dir foo
Если вы сделаете это
GetOptions
(
'dir=@s' => \@dir,
) or die ("Couldnot process arguments");
Вы получите все каталоги в простом старом массиве
yourscript.pl -dir foo -dir blah