So for example, if the user enters -3, all the lines in the file that begin with a numerical value that is greater than 3 will be excluded. Or if the user enters the value 1, all lines beginning with a value greater than 1 will be excluded.

So based on that description, the user entering -3 is the same as entering 3?

#!/usr/bin/env perl use strict; use warnings; print "Enter limit: "; chomp( my $limit = <STDIN> ); $limit = abs($limit); open my $in, '<', "file.hairpin" or die $!; open my $sifted, '>', "new_file.hairpin" or die $!; while (<$in>){ next if /^None/; next if /^(\d+)/ && $1 > $limit; print $sifted $_; } close $in; close $sifted;

Or as a oneliner (where "123" is the limit):

perl -ne 'print unless /^None/ || ( /^(\d+)/ && $1>123 )' file.hairpin + >new_file.hairpin

As for your code here, it looks like you don't need to collect your lines in arrays but can write them to the output file directly (or, at the very least you don't need to open your output file once per line of output).

Update: I just noticed that the sample input in the OP includes decimals and negative numbers, so you'd have to adjust the regex in my example code above accordingly. But before you try to develop really complex regexes, have a look at Regexp::Common::number.


In reply to Re^3: Easiest way to filter a file based on user input (updated) by haukex
in thread Easiest way to filter a file based on user input by Peter Keystrokes

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.