at the end of all my scripts. I want that code to be conditional on being invoked from a double-click file association. thanks for you help, - j Update: I was having trouble with the ouse.pm solution. It's good for double-clicking. However, if I invoke a script from the command line as:print "Hit <Enter> to continue\n"; my $y = <STDIN>;
instead of> foo.pl
I get the wait condition in the first case because the file association is still being used. I updated ouse.pm to use the Win32::Process::Info module to see if the parent process is Windows Explorer. UPdate 2: forgot a line> perl foo.pl
=head1 NAME ouse.pm =head1 SYNOPSIS perl -Mouse file.pl =head1 DESCRIPTION Install in your perl/lib or perl/site/lib directory in a file named "ouse.pm". Then enter the following commands: assoc .pl=Perl ftype Perl=C:\Progra~1\perl\bin\perl -Mouse "%1" %* Then clicking on a *.pl file will cause the script to run in a new window but the window will (usually) not close when the script finishes. =head1 AUTHOR tye http://perlmonks.org/index.pl?node_id=162087 =cut use Win32::Process::Info; END { #-- find the parent process; my $pi = Win32::Process::Info->new(); my @info = $pi->GetProcInfo ( $$); my @pinfo = $pi->GetProcInfo ( @info[0]->{ParentProcessId} ); #-- see if the parent process is the windows explorer. if ( $pinfo[0]->{CommandLine} =~ /explorer/i ) { eval " use Term::ReadKey; "; unless($@) { print "Press any key to close..."; ReadMode(3); ReadKey(); ReadMode(0); } else { print "Press ENTER to close: "; <STDIN>; } } } 1;
In reply to Windows .pl file assoc vs. cmd prompt by jimbojones
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |