1

これは非常に簡単であるべきだと思います。kml ファイルの内容をスカラー ($kml と呼ばれる) として設定しようとしています。現時点では、kml の最初の行のみが保存されています。改行を無視してファイル全体を読み込むにはどうすればよいですか?

私は現在持っています:

$kml = "Scotland_one_inch_1st.kml";

open INPUT, "$kml";
$content = <INPUT>;
close INPUT;

ありがとう

4

3 に答える 3

4

レコード入力セパレーターを変更し$/ます。

{
    local $/ = undef;
    open my $INPUT, $kml or die "Unable to open '$kml': $!";
    $content = <$INPUT>;
    close $INPUT or die $!;
}

または単に使用しますjoin

open my $INPUT, $kml or die "Unable to open '$kml': $!";
$content = join '', <$INPUT>;
close $INPUT or die $!;
于 2013-06-03T15:17:31.503 に答える
1

$/perl がファイル全体を丸呑みするように、スクリプトでスイッチを使用するか、入力レコード セパレータ ( ) を設定することができます。便宜上、1 つのライナーを使用してto (alomst?)-0を設定できます。IRS

perlrunを参照してください。これは-0、入力レコード セパレータを設定するために遊んで丸呑みする方法を教えてくれます。( ) に設定-0する と、その値には正当な文字がないため、perl はファイル全体を丸呑みします。777-0777

IRSスクリプト内のファイルを丸呑みしたいが、スクリプト全体に を設定したくない場合は、次のようなものが機能します ( perlvarから):

    open my $fh, "<", "foo" or die $!;
    local $/; # enable localized slurp mode
    my $content = <$fh>;
    close $fh;

perlvar docs は、なぜlocal変更を に変更するのが良いのかを説明してい$/ます。

于 2013-06-03T15:27:04.553 に答える