in reply to Re: For loop problem
in thread For loop problem

Thanks for your advice which has raised a point and a question in my mind. Point: The tags are on the inner most left side of the text file. I need $d and $key to be an exact numeric match. Question: Does the if ($d =~ /^$key$/){ not cover this in every circumstance? Point: I tried to do a numeric match but the $key is treated as a string.

Replies are listed 'Best First'.
Re: Re: Re: For loop problem
by graff (Chancellor) on Dec 02, 2002 at 00:40 UTC
    Something like this would probably make more sense (if I understand your situation correctly):
    open( OUTPUT_XML_A_OPEN, $output_XML_A_open ); open( NEW_OUTPUT_XML_A, "+>>", $new_output_xml_a ); for $d ( 1..9 ) { seek( OUTPUT_XML_A_OPEN, 0, 0 ); while (<OUTPUT_XML_A_OPEN>) { chomp; # I'm leaving out a lot of your debugging stuff if( /^$d\D/ ) { # does this line start with "$d"? print NEW_OUTPUT_XML_A; } } }

    As I understand it, you are trying to find lines in the input file that begin with single-digit numbers, and print these to an output file in sorted order (all the "1" lines first, then all the "2" lines, etc), without worrying about any sub-sort ordering (all the "1" lines can be in any order).

    In that regard, I wonder why you open the output file for "append" access (">>") -- and why you open it for both read and write access (using "+"), when you don't really need to read it here?