2012-07-23 12 views

cevap

7

Evet. perldoc -f open'da belgelendiği gibi, dosya elemelerini skaler değişkenlere açabilirsiniz.

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

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

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

Gerçekten yapmanız gerekiyorsa, bir dosya tanıtıcısı açabilirsiniz. Zaten yine hafızada şeyler var ise

use strict; 
use warnings; 

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

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

Alternatif olarak, sadece bir dizi içerisine bölünmüş olabilir:

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

muhtemelen okumak ve çizgi aşağı korumak için daha kolay olurdu bu.

+2

Bunu yapmanın olası bir nedeni açık ARGV 'ait hiledir yaptıysam olarak çalışmaktadır '<', \ $ default_data @ ARGV'sini okuyorsa, '<' 'dosyaları aktarılmadığı sürece varsayılan verileri kullanır. –