in reply to Re: troubleshooting filehandle
in thread troubleshooting filehandle

Well what happens is that it totally ignores the if and elsif statements and goes straight to the else statement as you can see if you run it without the else section commented out, which is not the desired result.

Replies are listed 'Best First'.
Re^3: troubleshooting filehandle
by Jenda (Abbot) on Oct 17, 2008 at 22:01 UTC

    And are you sure the very first line in DATA matches one of the condition? 'Cause if it doesn't Perl tries the first one, fails, tries the second one, fails, prints 'nope' and the content of the line and EXITS THE LOOP.

      Oh I see what you mean now Jenda. So then what I think I need to do is make the if condition iterate over every line of the text file until it finds the matching syntax, yes? The first line in DATA:
      #bg at,super
      does not match any conditions:
      if ((/#bg\s$input/ .. /#be\s$input/) =~ /^\d+(?<!^1)$/)
      or
       elsif (/bb\s$input/)
      and I dont want it to either.
      my conditions:

      if ((/#bg\s$input/ .. /#be\s$input/) =~ /^\d+(?<!^1)$/) { print $_; }


      elsif (/bb\s$input/) { print $_; last; }


      else { print "nope".$_; last; }


      So the first if condition should print everything between
      /#bg\s$input/
      and
      /#be\s$input/
      and this part:
      /^\d+(?<!^1)$/
      will get rid of the starting and ending points: "/#bg\s$input/ and /#be\s$input/",
      leaving everything else in between. Am I way off track here?