http://qs321.pair.com?node_id=1233694


in reply to Re: processing file content as string vs array
in thread processing file content as string vs array

One thing you can add to his code if you only have one occurence of @user_info in the whole file is an exit from the loop as soon as you have found your data

That's a very good point! Here's two more variants, the first if the start and end tag should be captured, the second if they shouldn't (replaces the if/elsif):

if ( my $flag = /\@user_info_start/ ... /\@user_info_end/ ) { push @userinfo, $_; last LINE if $flag=~/E0/; } # - or - if ( my $flag = /\@user_info_start/ ... /\@user_info_end/ ) { last LINE if $flag=~/E0/; push @userinfo, $_ unless $flag==1; }

See also Behavior of Flip-Flop Operators and Flipin good, or a total flop?

Replies are listed 'Best First'.
Re^3: processing file content as string vs array
by Eily (Monsignor) on May 13, 2019 at 13:54 UTC

    ++ in the spirit of TIMTOWTDI, but I personally don't like that version because /E0/ is too much of a magic value for me.

      /E0/ is too much of a magic value for me

      I see what you mean*, but I don't mind it as much - it's explicitly documented in perlop, which I interpret as a guarantee of this API:

      The final sequence number in a range has the string "E0" appended to it, which doesn't affect its numeric value, but gives you something to search for if you want to exclude the endpoint. You can exclude the beginning point by waiting for the sequence number to be greater than 1.

      * Update: It would probably make sense to document the /E0/ with a code comment to demystify this magic!

Re^3: processing file content as string vs array
by vinoth.ree (Monsignor) on May 14, 2019 at 12:22 UTC
    Thank you haukex it works awesome!!!


    All is well. I learn by answering your questions...