Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^2: col-uniq -- remove lines that match on selected column(s)

by graff (Chancellor)
on Nov 10, 2008 at 02:42 UTC ( [id://722544]=note: print w/replies, xml ) Need Help??


in reply to Re: col-uniq -- remove lines that match on selected column(s)
in thread col-uniq -- remove lines that match on selected column(s)

Thanks! I almost agreed with your first suggestion, until I remembered why I used "default" as the, um, default value for the delimiter option. It seemed a lot less likely that someone would actually need to use the word "default" as a column delimiter, and rather more likely that they might want to use a single space character -- not in the "magical" sense of split ' ' but rather in the literal sense of split / / -- and this entails that every time the user gives a delimiter on the command line, it should always be treated as a regex. This way you only get the "magical" split behavior when you don't supply the "-d regex" option, and you have the ability to split on single space if you want to.

As for your second point, it's true the code as originally posted could lead to an "out of memory" condition, if it got a very long stream of repeated lines. But I wanted an array that I could "pop" or "shift" off of in order to print a duplicate line only once. So to fix the possible memory consumption problem, instead of "pushing" onto the array every time there's a duplication, I just make sure the array never contains more than one element (and this happens to be the line that the user wants to see). That made the print statements a lot simpler too, which is nice.

Update: then again, after making that change to how I was using the "heldline" array, I finally realized that it doesn't have to be an array, which is exactly what you said. So I fixed it (and I thank you) again.

Replies are listed 'Best First'.
Re^3: col-uniq -- remove lines that match on selected column(s)
by repellent (Priest) on Nov 10, 2008 at 17:49 UTC
      ... might want to use a single space character -- not in the "magical" sense of split ' ' but rather in the literal sense of split / / ...

    Ahh, I see. Then I'll suggest using $delim = undef and defined($delim) instead, as a means towards a more thorough solution.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://722544]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (9)
As of 2024-03-28 08:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found