http://www.perlmonks.org?node_id=190604


in reply to I need help with pattern matching

The cause of the "odd" output is the carriage return character you're leaving on the end of $new_string. I assume you're running this code on UNIX so that $/ is set to "\n" and chomp() removes only the newline, leaving the carriage return, which when output to the display device repositions the point at the beginning of the line.

You could get rid of the carriage return by assigning the proper record separator string to a dynamic copy of $/:

{ # localized global variable # this copy of $/ is visible only within this block # and to subroutines called from within the block. local $/ = "\r\n"; while (<I>) { next unless /Physical Address/; /:/; # why is this here? chomp; # chomp now removes "\r" in addition to "\n" ... }