구성 스크립트를 쓰려고합니다. 각 고객에 대해 변수를 묻고 여러 텍스트 파일을 작성합니다.Perl : 파일을 열고 편집 한 후 다른 이름으로 저장하십시오.
그러나 각 텍스트 파일을 두 번 이상 사용해야하므로 덮어 쓸 수 없습니다. 각 파일을 읽고 변경 한 다음 $ name.originalname에 저장하는 것이 좋습니다.
이것이 가능합니까?
복사 한 파일을 먼저 파일을 복사 한 다음 편집 할 이유구성 스크립트를 쓰려고합니다. 각 고객에 대해 변수를 묻고 여러 텍스트 파일을 작성합니다.Perl : 파일을 열고 편집 한 후 다른 이름으로 저장하십시오.
그러나 각 텍스트 파일을 두 번 이상 사용해야하므로 덮어 쓸 수 없습니다. 각 파일을 읽고 변경 한 다음 $ name.originalname에 저장하는 것이 좋습니다.
이것이 가능합니까?
복사 한 파일을 먼저 파일을 복사 한 다음 편집 할 이유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";
}
나는 뭔가를 알아 냈다. 나는 펄이 다른 스크립트와 같이 "흐르지 않는다"는 것을 잊었다. 나는 붙어있다 $ 고객 _ 이름 = "자리 표시 자"; 거기에 CPE_Option_A.txt.placeholder라는 파일이 있습니다. 그래서 문제는 파일을 마지막으로 복사해야한다는 것입니다. – Soop
Template Toolkit과 같은 것을 원합니다. 템플릿 엔진에서 템플릿을 열고 자리 표시자를 채우고 결과를 저장하게합니다. 당신은 그 마법을 당신 자신에게해서는 안됩니다.
매우 작은 일자리의 경우 때때로 Text::Template을 사용합니다.
당신이 하나 개의 파일에 읽고 여기에 줄 단위를 변경 한 후 다른 파일에 기록 할 가정 :
#!/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;
이 아주 명확하지 않다. "한 번 이상 사용한"것이 무엇을 의미하는지, 그리고 무엇을 시도했는지 말해 줄 수 있습니까? –
아직 아무 것도 시도하지 않았습니다. 계획하고 있습니다. "두 번 이상 사용됨"은 여러 변수 집합에 대해 동일한 파일을 의미합니다. 따라서 변경되지 않아야합니다. – Soop