2012-07-23 127 views

回答

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'那麼讀取'<>'將使用默認數據,除非傳入文件。 – 2012-07-23 03:44:37