2010-01-15 3 views
3

구성 스크립트를 쓰려고합니다. 각 고객에 대해 변수를 묻고 여러 텍스트 파일을 작성합니다.Perl : 파일을 열고 편집 한 후 다른 이름으로 저장하십시오.

그러나 각 텍스트 파일을 두 번 이상 사용해야하므로 덮어 쓸 수 없습니다. 각 파일을 읽고 변경 한 다음 $ name.originalname에 저장하는 것이 좋습니다.

이것이 가능합니까?

복사 한 파일을 먼저 파일을 복사 한 다음 편집 할 이유
+0

이 아주 명확하지 않다. "한 번 이상 사용한"것이 무엇을 의미하는지, 그리고 무엇을 시도했는지 말해 줄 수 있습니까? –

+0

아직 아무 것도 시도하지 않았습니다. 계획하고 있습니다. "두 번 이상 사용됨"은 여러 변수 집합에 대해 동일한 파일을 의미합니다. 따라서 변경되지 않아야합니다. – Soop

답변

1

+0

아 좋아, 내가 갈께 :) 분명히 보이지만 멍청이야 – Soop

0
, 예를 들어, 조의 템플릿 joe.originaljoe하고 joe에 출력을 기록하는 위치 아래 코드는 각 고객에 대한 구성 템플릿을 찾을 것으로 예상

:

foreach my $name (@customers) { 
    my $template = "$name.original$name"; 
    open my $in, "<", $template or die "$0: open $template"; 
    open my $out, ">", $name  or die "$0: open $name"; 

    # whatever processing you're doing goes here 
    my $output = process_template $in; 

    print $out $output   or die "$0: print $out: $!"; 

    close $in; 
    close $out     or warn "$0: close $name"; 
} 
+0

나는 뭔가를 알아 냈다. 나는 펄이 다른 스크립트와 같이 "흐르지 않는다"는 것을 잊었다. 나는 붙어있다 $ 고객 _ 이름 = "자리 표시 자"; 거기에 CPE_Option_A.txt.placeholder라는 파일이 있습니다. 그래서 문제는 파일을 마지막으로 복사해야한다는 것입니다. – Soop

4

Template Toolkit과 같은 것을 원합니다. 템플릿 엔진에서 템플릿을 열고 자리 표시자를 채우고 결과를 저장하게합니다. 당신은 그 마법을 당신 자신에게해서는 안됩니다.

매우 작은 일자리의 경우 때때로 Text::Template을 사용합니다.

0

당신이 하나 개의 파일에 읽고 여기에 줄 단위를 변경 한 후 다른 파일에 기록 할 가정 :

#!/usr/bin/perl 

use strict; 
use warnings; 

# set $input_file and #output_file accordingly 

# input file 
open my $in_filehandle, '<', $input_file or die $!; 
# output file 
open my $out_filehandle, '>', $output_file or die $!; 

# iterate through the input file one line at a time 
while (<$in_filehandle>) { 

    # save this line and remove the newline 
    my $input_line = $_; 
    chomp $input_line; 

    # prepare the line to be written out 
    my $output_line = do_something($input_line); 

    # write to the output file 
    print $output_line . "\n"; 

} 

close $in_filehandle; 
close $out_filehandle; 
관련 문제