Изменение притон линии скопом не так уж плохо:
#! /usr/bin/perl
use warnings;
use strict;
use File::Find;
sub usage { "Usage: $0 dir ..\n" }
my @todo;
sub has_perl_shebang {
return unless -f;
open my $fh, "<", $_ or warn "$0: open $File::Find::name: $!", return;
push @todo => $File::Find::name
if (scalar(<$fh>) || "") =~ /\A#!.*\bperl/i;
}
die usage unless @ARGV;
find \&has_perl_shebang => @ARGV;
local($^I,@ARGV) = ("",@todo);
while (<>) {
s[^(\#!.*) $ ][#! /usr/bin/env perl]x
if $. == 1;
print;
}
continue {
close ARGV if eof;
}
В зависимости от того, что вы имеете, s///
может потребоваться немного умнее, чтобы обрабатывать переключатели, такие как -T
, которые должны быть на линии shebang.
Добавить вариант всухую с некоторыми изменениями, а также интересное использование redo
:
my $dryrun;
{
die usage unless @ARGV;
$dryrun = shift @ARGV, redo if $ARGV[0] eq "-n";
}
find \&has_perl_shebang => @ARGV;
if ($dryrun) {
warn "$0: $_\n" for @todo;
exit 1;
}
Lycos все еще работает? Да. – Ether
Да, это так. Зачем? –
@Ether - Они делают. IIRC последним владельцем была некоторая корейская компания. У них есть как совокупный поиск HotBot (их собственные + MSN + ask.com результаты), так и собственный механизм визуального поиска LyGO, который звучит немного круто, но использует тот же дерьмовый устаревший старый индекс поиска Lycos. – DVK