use warnings; use strict; use feature 'state'; use Win32::API; sub GetCommandLine { state $GetCommandLine = Win32::API->new("kernel32", "GetCommandLine", [], 'P'); ( my $c = pack("a1024", $GetCommandLine->Call()) ) =~ s/\0*$//; return $c; } use Data::Dumper; $Data::Dumper::Useqq=1; my $cmdline = GetCommandLine(); print Dumper($cmdline); $cmdline =~ s/^(?:\Q$^X\E|perl(?:\.exe|\.bat|\.cmd)?)\s+(?:\Q$0\E\s+)?//; # hack!! print "some_cmd ", $cmdline, "\n"; __END__ X:\Perl>perl cmdline.pl "1 2" "3" 4 $VAR1 = "perl cmdline.pl \"1 2\" \"3\" 4"; some_cmd "1 2" "3" 4