in reply to Multiline Regex

use 5.010; for (split m/\n/, $str) { say if m/$regex/; }

If you don't want to capture the line, you have to extract the line first.

Replies are listed 'Best First'.
Re^2: Multiline Regex
by ikegami (Patriarch) on Oct 09, 2008 at 09:53 UTC

    Note: split /\n/ is only an acceptable of splitting text into lines if you don't care about eliminating trailing blank lines.

    $str = "this\nis my short\nstring\n\n"; $i=0; for (split /\n/, $str) { print(++$i, ": $_\n"); } print("\n"); $i=0; for ($str =~ /.*\n|.+/g) { # Just like <> print(++$i, ": $_"); }
      Note: split /\n/ is only an acceptable of splitting text into lines if you don't care about eliminating trailing blank lines.

      You can perhaps get around that by supplying a third argument to split of -1. The method does point up a non-existant empty line at the end of the file but that can be coped with by spliting to an array and poping if necessary.

      use strict; use warnings; my $str = qq{this\nis my short\nstring\n\n}; my $count = 0; for ( split m{\n}, $str, -1 ) { print ++ $count, qq{: $_\n}; }

      Produces

      1: this 2: is my short 3: string 4: 5:

      I hope this is of interest.

      Cheers,

      JohnGG

      If the regex can match the empty string, the OP has likely other problems than trailing empty lines. If it can't match the empty string, the example code will never fail.

        I don't know to what kind of problems you are referring.

        And for an extra character, I'd use the more versatile code over the code that probably works in this situation.