Hello all. I've been spending too much money lately on Amazon buying
Perl books. Recently, I've been playing with scripts downloaded from
the Web site of a book I'm going through. For some reason, some of
the .pl files have a shebang, and others do not.
1. What's the difference, other than whether you have to run them by
calling Perl or not?
2. I cobbled together a little Perl script to add the shebang where
it doesn't exist. I'd appreciate any feedback, especially any
suggestions if I'm doing anything weird, or it could be done better
or more "Perlishly."
Thanks,
Shawn
------------------------------------------------------------------------
------------------------
begin script
------------------------------------------------------------------------
------------------------
#!/usr/bin/perl
#add_shebang.pl
#possible use: ls | ./add_shebang.pl
use strict;
use warnings;
use File::Copy "cp";
#For each file sent as an argument, check to see if
#the first line is a shebang. If not, add one.
foreach my $file (<>){
chomp($file);
print "File name $file\n";
unless ($file =~ /\.pl$/){
print " Skipping $file -- not a .pl file.\n";
next;
}
my $shebang = "#!/usr/bin/perl\n\n";
open(HANDLE, $file);
my $lineNum = 0;
while (<HANDLE>){
$lineNum++;
if ($lineNum == 1){
if ($_ =~ /^#!/){
print " Shebang exists.\n";
last;
}else{
print " No shebang; creating.\n";
open(TEMP, ">$file.tmp");
print TEMP $shebang;
}#check for shebang
}else{
print TEMP $_;
}#if $lineNum == 1
}# while (<HANDLE>)
close(TEMP);
close(HANDLE);
unlink("$file.tmp") if cp("$file.tmp", $file);
}#foreach $file
------------------------------------------------------------------------
------------------------
end script
------------------------------------------------------------------------
------------------------
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>