2012-03-28 3 views

답변

5

트릭 질문과 같은 소리가 들리고, 나는 당신을 올바르게 이해하고 있는지 궁금합니다.

perl -pi.bak myScript.pl myfiletochange 

그냥 perl을 호출하고 스위치와 스크립트 이름을 제공하면됩니다.

이제 이러한 추가 인수를 제공하지 않을 수도 있습니다. 그렇다면 the variable $^I을 설정하면 바로 편집 할 수 있습니다. 예 :

당신이이 같은 수행 할 수 있습니다 스크립트를 사용하려고하기 때문에
$^I = ".bak"; # will set backup extension 
+0

없음 트릭 - 기술적이지 않은 사용자를위한 스크립트를 작성하고 자체 포함 시키려합니다. 감사. – chris

+1

@chris 기술적이지 않은 사용자는 스크립트가 백업을 저장하는 동안 원본 파일에서 스크립트를 계속 사용할 때마다 해당 백업을 덮어 씁니다. – TLP

+0

예. 일회성 일입니다. – chris

0

: 백업을 만들려면

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; 
}; 

다음 변경을 local $^I = '';local $^I = '.bak';