Solved

Perl does not see command line arguments

Posted on 2014-01-02
10
504 Views
Last Modified: 2014-01-11
I am rehosting my Perl programs from Windows 7 to 8.1.  All is well except that my perl scripts do not detect any command line parameter.  Here is my assoc command

-----------------------------------------------------
 C:\ODpair>assoc .pl
.pl=Perl

C:\ODpair>ftype Perl
Perl="C:\Perl\bin\perl.exe" "%1" %*
-----------------------------------------------------

I appreciate any help to resolve this from you experts.
pax
0
Comment
Question by:cpeters5
  • 6
  • 4
10 Comments
 
LVL 28

Expert Comment

by:FishMonger
Comment Utility
Having an ftype entry is not required and in my case Perl is not listed in ftype.

What is required is having the proper registry entry under HKEY_CLASSES_ROOT.

Open regedit and navigate to the Perl entry and inspect its layout and value for the command param.  In my case it's actually under HKEY_CLASSES_ROOT\Perl_program_file.

Here's the complete exported key from my system.
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Perl_program_file]
@="Perl program file"

[HKEY_CLASSES_ROOT\Perl_program_file\shell]

[HKEY_CLASSES_ROOT\Perl_program_file\shell\Execute Perl Program]

[HKEY_CLASSES_ROOT\Perl_program_file\shell\Execute Perl Program\command]
@="\"C:\\strawberry\\perl\\bin\\perl.exe\" \"%1\" %*"
0
 
LVL 28

Expert Comment

by:FishMonger
Comment Utility
After checking and possibly fixing the registry entry, see if you get the same output from this test.

c:\test>perl -e "print $_,$/ for @ARGV" 1 2 3
1
2
3
0
 

Author Comment

by:cpeters5
Comment Utility
FishMonger,
No luck.  Attached is my regedit screen

Note: I just reinstalled version 5.18 in c:/perl64/.  No luck there either.

pax
regedit.pptx
0
 

Author Comment

by:cpeters5
Comment Utility
Interestingly,
If I run my script with perl command.  I.e.
c:>perl myscript.pl 123 456
Then myscript.pl detected @ARGV = (123,456);

This suggests the problem is the file type association...

Here is the .PL assoc again

C:\>assoc .pl
.pl=Perl

with
$PATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PL
0
 
LVL 28

Expert Comment

by:FishMonger
Comment Utility
Which distro did you install, Activestate or Strawberry, or some other one?

Your print screen shows that you still have the reg entry of the first perl installation.  Did you uninstall the old perl before installing the new version?

My guess is that the reg entries of the 2 installations are conflicting with each other.  Can you expand the other reg entry and post the print screen of it?
0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 
LVL 28

Expert Comment

by:FishMonger
Comment Utility
It also appears that you have PerlScript installed, which is Microsoft's implementation (port) of perl.  That could also be conflicting with your other installation.
0
 

Author Comment

by:cpeters5
Comment Utility
FishMonger,
There were 3 versions installed.  I uninstall all three, all keys removed.  Then install fresh Perl 5.18.
After the installation, I activated ppm.  It detected only the 276 installed packages.  But this time, no error output as before.

Do you detect any problem in the attached screenshot for: regedit, ppm screen and Perl -v?

Also, do you have suggestion for a work around?  I have immediate need for a few modules such as DateTime, Location::GeoLoc, XML::Simple and some math::stuff

Thanks!
perlinfo.pptx
0
 
LVL 28

Expert Comment

by:FishMonger
Comment Utility
Everything looks good in your screenshot.

Are your scripts now able to see the command line args?  If so, then you should be fine and no "work around" would be needed.

Have you tried installing any of those modules?  If so, did they install properly or did they fail and produce error messages?
0
 
LVL 28

Accepted Solution

by:
FishMonger earned 500 total points
Comment Utility
You'll want to add a few additional repositories to ppm.

Personally, I've moved away from using ppm and instead install all of my modules via cpan.  You first need to install MinGW-w64 to get the needed GCC compiler.

You might be able to install that via ppm.  At least it was available in the 32bit version.  I'm not sure if it's available in the 64bit version of ppm.
0
 

Author Closing Comment

by:cpeters5
Comment Utility
Took me a while to find the right MinGW-w64 that works.
Thanks FishMonger.
0

Featured Post

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

Suggested Solutions

With the recent demise of Windows XP support, you may be a new convert to Windows 7 or Windows 8. Or perhaps you've been on W7 or W8 for a while, but just recently acquired your first scanner for the new OS. In either case, you are likely to be very…
Sometimes a user will call me frantically, explaining that something has gone wrong and they have tried everything (read - they have messed it up more and now need someone to clean up) and it still does no good, can I help them?!  Usually the standa…
In this video, we discuss why the need for additional vertical screen space has become more important in recent years, namely, due to the transition in the marketplace of 4x3 computer screens to 16x9 and 16x10 screens (so-called widescreen format). …
This Micro Tutorial will show you how to maximize your wireless card to its maximum capability. This will be demonstrated using Intel(R) Centrino(R) Wireless-N 2230 wireless card on Windows 8 operating system.

771 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now