2012-07-23 4 views
7

나는 Perl에서 하나의 변수에 많은 행을 저장했다.Perl 변수에서 읽기

<> 연산자를 사용하여 해당 라인을 읽을 수 있는지 알고 싶습니다.

답변

7

예. perldoc -f open에 설명되어 있듯이 파일 핸들을 스칼라 변수로 열 수 있습니다.

my $data = <<''; 
line1 
line2 
line3 

open my $fh, '<', \$data; 
while (<$fh>) { 
    chomp; 
    print "[[ $_ ]]\n"; 
} 

# prints 
# [[ line1 ]] 
# [[ line2 ]] 
# [[ line3 ]] 
14

정말로 필요한 경우 파일 핸들을 열 수 있습니다. 이미 어쨌든 메모리에 물건을 가지고 있다면

use strict; 
use warnings; 

my $lines = "one\ntwo\nthree"; 
open my $fh, "<", \$lines; 

while(<$fh>) { 
    print "line $.: $_"; 
} 

또는, 당신은 단지 배열로 분할 수 :

my @lines = split /\n/, $lines; # or whatever 
foreach my $line(@lines) { 
    # do stuff 
} 

아마 읽고 라인을 유지하기 쉬울 것 그.

+2

이 할 수있는 가능한 이유가 열려 ARGV'의 트릭했던 것처럼 작동 '<', \ $ default_data는 @ ARGV가 아니라면'<> '를 읽으면 파일이 전달되지 않는 한 기본 데이터를 사용하게됩니다. –