2012-03-28 8 views
2

In der Unix/Linux-Version, würde ich einfach die erste Zeile: auf WindowsWie kann ich inplace bearbeiten (-i) mit Perl auf Windows?

#!perl -i.bak 

Mit Activestate-Perl, wo ich die Verbindung mit .pl erstellt haben, kann ich ein Perl-Skript laufen direkt aus die Befehlszeile.

myScript.pl 

Wie kann ich Inplace-Bearbeitung von Dateien tun, wenn ich immer noch die Standardzuordnung verwenden möchte?

Antwort

5

Klingt wie eine Trickfrage, und ich frage mich, ob ich Sie richtig verstehe.

Rufen Sie einfach perl, geben Sie die Schalter und den Namen des Skripts, und los gehts.

Möglicherweise möchten Sie diese zusätzlichen Argumente nicht angeben. Wenn dies der Fall ist, können Sie einfach the variable $^I setzen, wodurch die Inplace-Bearbeitung aktiviert wird. ZB:

$^I = ".bak"; # will set backup extension 
+0

Nein Trick - Erstellen eines Skripts für einen nicht-technischen Benutzer und möchte es in sich geschlossen haben. Vielen Dank. – chris

+1

@chris Ihr nichttechnischer Benutzer sollte beachten, dass während das Skript eine Sicherung speichert, diese Sicherung für jede nachfolgende Verwendung des Skripts in der Quelldatei überschrieben wird. – TLP

+0

Yup. Es ist eine einmalige Sache. – chris

0

Da Sie ein Skript zu gehen, verwenden Sie könnte so etwas wie dies tun wollen:

sub edit_in_place 
{ 
    my $file  = shift; 
    my $code  = shift; 
    { 
     local @ARGV = ($file); 
     local $^I = ''; 
     while (<>) { 
      &$code; 
     } 
    } 
} 

edit_in_place $file, sub { 
    s/search/replace/; 
    print; 
}; 

wenn Sie ein Backup erstellen möchten, dann local $^I = ''; ändern local $^I = '.bak';

Verwandte Themen