in reply to Re: Re: Efficiency issues in text parsing
in thread replacing text in specific tags

Hi, I am using

$/="^Z";

$*=1;

for switching ON the multiline mode in my file while doing some regular expression find and replace.

How to switch it OFF.

Is it possible to ON and OFF the mode in the same script.

please advice

Replies are listed 'Best First'.
Re: Multiline Mode
by CombatSquirrel (Hermit) on Sep 06, 2003 at 14:37 UTC
    You might be looking for the /s modifier. Have a look at perlre.
    Cheers,
    CombatSquirrel.
    Entropy is the tendency of everything going to hell.
      Hi,

      I have a file with the following text:

      INPUT:

      {B001:B001}
      {B002:B002}
      {B003:B003}
      {B00kr:B004}
      {B00krup:B005}
      {B00krupa:B006}
      {B007:B007}
      {B008:B008}

      and my code is producing the following output:

      OUTPUT:

      1:1:1
      2:2:2
      3:3:3
      kr:4:
      krup:5:
      krupa:6:
      7:7:7
      8:8:8

      i.e., for 4,5 and 6 the third value is missing, pls review the code and suggest me what to do.

      CODE:

      while(<IN>) { if(/\{B00(.+?):B00(.+?)\}/){ $values{$2} = $1; print "$1:$2:$values{$2}\n"; } }

      I guess, $values{$2} takes only numeric argument

      But I need this to search with the $2 argument only, because I need to replace the text of an another file as

      from

      <x-ref refid="B00kr,B00krup,B00krupa">

      to

      <x-ref refid="B004,B005,B005">

        It works for me. Execute the following:
        @lines = qw( {B001:B001} {B002:B002} {B003:B003} {B00kr:B004} {B00krup:B005} {B00krupa:B006} {B007:B007} {B008:B008} ); for (@lines) { if(/\{B00(.+?):B00(.+?)\}/){ $values{$2} = $1; print "$1:$2:$values{$2}\n"; } } __END__ 1:1:1 2:2:2 3:3:3 kr:4:kr krup:5:krup krupa:6:krupa 7:7:7 8:8:8
        CombatSquirrel.
        Entropy is the tendency of everything going to hell.