2012-07-23 8 views
7

私は多くの行をPerlの1つの変数に格納しています。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'を除いて、ファイルが渡されない限り '<>'を読むとデフォルトのデータが使われます。 –

関連する問題