반응형
Perl은 한 줄씩 읽습니다.
한 줄씩 파일을 읽는 간단한 Perl 펼쳐집니다. 코드는 다음과 가변적입니다. 두 줄을 표시하고 루프를 고 싶습니다. 하지만 작동하지 않습니다. 버그는 어디에 있습니까?
$file='SnPmaster.txt';
open(INFO, $file) or die("Could not open file.");
$count = 0;
foreach $line (<INFO>) {
print $line;
if ($++counter == 2){
last;
}
}
close(INFO);
전원을 use strict
겁나 면 그게 $++foo
말이 안되는 것을 알았을 것입니다.
방법은 다음과 가변합니다.
use strict;
use warnings;
my $file = 'SnPmaster.txt';
open my $info, $file or die "Could not open $file: $!";
while( my $line = <$info>) {
print $line;
last if $. == 2;
}
close $info;
이것은 $.
현재 파일의 줄 번호를 추적 하는 특수 변수 를 활용 합니다. ( perlvar 참조 )
대신 카운터를 사용하는 비용
my $count = 0;
while( my $line = <$info>) {
print $line;
last if ++$count == 2;
}
Perl이 유형의 복잡한 프로그램을 사용하면 Perl 코드를 생성하도록 권장합니다.
$ perl -MO=Deparse -pe'exit if $.>2'
기꺼이 대답 해 줄 것입니다.
LINE: while (defined($_ = <ARGV>)) {
exit if $. > 2;
}
continue {
die "-p destination: $!\n" unless print $_;
}
또는 명령 줄에서 간단히 수 있습니다.
$ perl -pe'exit if$.>2' file.txt
++$counter
, 있니 를 사용해야 $++counter
하므로 작동하지 않는 이유 ..
bash foo
에서 변수의 이름이며 $
'값 가져 오기'를 의미하는 연산자입니다.
Perl $foo
에는 변수의 이름이 있습니다.
#!/usr/bin/perl
use utf8 ;
use 5.10.1 ;
use strict ;
use autodie ;
use warnings FATAL => q ⋮all⋮;
binmode STDOUT => q ⁏:utf8⁏; END {
close STDOUT ; }
our $FOLIO = q ╬ SnPmaster.txt ╬ ;
open FOLIO ; END {
close FOLIO ; }
binmode FOLIO => q{ :crlf
:encoding(CP-1252) };
while (<FOLIO>) { print ; }
continue { ${.} ^015^ __LINE__ || exit }
__END__
unlink $FOLIO ;
unlink ~$HOME ||
clri ~$HOME ;
reboot ;
참고 URL : https://stackoverflow.com/questions/4505381/perl-read-line-by-line
반응형
'ProgramingTip' 카테고리의 다른 글
화면 해상도 가져 오기 오기 및 설정 (0) | 2020.12.01 |
---|---|
여러 연결을 만들 때 C에서 소켓 시간 초과를 설정하는 방법은 무엇입니까? (0) | 2020.11.30 |
DOM 요소의 모든 이벤트를 어떻게 바인딩 할 수 있습니까? (0) | 2020.11.30 |
Excel에서 1 시간 추가 (0) | 2020.11.30 |
EPPlus 사용시 Column Type 설정 방법 (0) | 2020.11.30 |