2017年8月3日のブックマーク (2件)

  • ある技術者の備忘録 >> Perlでファイル内容を一括して読み込むには

    Perlではファイルを一括読み込みする場合、よく以下のように書かれます。 open( IN, "<$fileName" ); my @data = <IN>; close(IN); ただ、これだと読み込んだデータが改行で区切られて配列に入ってしまいます。PHPでいうところの file_get_contents みたいに改行も含む文字列として一括して読み込むには、次のようにします。 open( IN, "<$fileName" ); local $/ = undef; my $data = <IN>; close(IN); これは、特殊変数である$/(改行区切り)を一時的に無効にしてから一行分のデータを読み込むということをしています。この改行の無効化により、「一行分のデータ=文末までのデータ」ということになります。

    masatoz
    masatoz 2017/08/03
    複数行にマッチ
  • Perlの正規表現で複数行にマッチさせる方法

    Perlの正規表現で複数行にマッチさせる方法を紹介します。 1.改行を含めてマッチさせる 複数行にマッチさせるには、単に改行文字「\r\n」や「\n」を正規表現に含めるだけです。 ですが、そもそも対象のテキストに改行が含まれていることが前提になります。 次のように、ファイルをオープンしてファイルハンドルをwhile文でループさせるだけでは改行は含まれません。ファイルハンドルに1行ずつ配列として読み込まれるためです。 open my $fh, $file; while (<$fh>) { # ... } 改行にマッチさせる正規表現は知っていても、ファイルを一括読み込みさせる方法が分からない方は、3項に示す一括読み込みを行ってください。 2.改行を含めてマッチさせる(他の方法) 1項の他に、改行を含めたマッチ方法としては、mオプションまたはsオプションの利用があります。 sオプション(または1

    Perlの正規表現で複数行にマッチさせる方法
    masatoz
    masatoz 2017/08/03
    複数行にマッチ