Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^6: Bug in Sort::Fields?

by cmv (Chaplain)
on Jul 20, 2010 at 19:41 UTC ( #850505=note: print w/ replies, xml ) Need Help??


in reply to Re^5: Bug in Sort::Fields?
in thread Split(), Initial Spaces, & a limit?

ikegami-

This is an extremely interesting discussion for me, thanks for staying with it.

It seems that my perception is that the first field is not being treated the same, and I'm wishing it was.

I'm starting to understand that your perception is that it is being treated the same.

I offer this bit of code to try and show my perspective:

use strict; use warnings; use Sort::Fields; use Data::Dumper; my @data = `ls -ls | tail -5`; chomp(@data); print "Field 1 sort:\n", Dumper(fieldsort( ['1n'], @data)); @data = `ls -l | tail -5`; chomp(@data); print "Field 5 sort:\n", Dumper(fieldsort( ['5n'], @data));
The field 1 sort is not sorted at all. We know why, we've been beating that poor horsie all afternoon.

The field 5 sort is sorted correctly. Only because field 1 didn't have any leading spaces in any of the lines.

What I'm hearing you say is "As long as there are no leading spaces in field 1, Sort::Fields will treat all fields the same way".

What I believe I'm saying is "If Sort::Fields can handle initial spaces in field 5, why does it handle initial spaces in field 1 differently?".

Is that a fair assessment?


Comment on Re^6: Bug in Sort::Fields?
Download Code
Re^7: Bug in Sort::Fields?
by ikegami (Pope) on Jul 20, 2010 at 19:54 UTC

    The field 1 sort is not sorted at all. We know why, we've been beating that poor horsie all afternoon.

    It is being sorted correctly. Empty strings are placed first. You're miscounting the fields.

    The field 5 sort is sorted correctly.

    You say that because you haven't seen the following example:

    use strict; use warnings; use Sort::Fields; use Data::Dumper; my @data = split /\n/, <<'__EOI__'; 10 0 0 6 4 1 0 0 5 3 __EOI__ print "Field 1 sort:\n", Dumper(fieldsort( ['1n'], @data)); print "Field 5 sort:\n", Dumper(fieldsort( ['5n'], @data)); __END__ Field 1 sort: $VAR1 = ' 1 0 0 5 3'; $VAR2 = '10 0 0 6 4'; Field 5 sort: $VAR1 = '10 0 0 6 4'; $VAR2 = ' 1 0 0 5 3';

    Field 1: "" < 10
    Field 5: 4 < 5

      Ah, I think we both have different definitions of fields.

      Your definition (please correct if I'm wrong) is whatever comes out of the split that is currently implemented in Sort::Fields. In perl terms it would be the output from:

      perl -MData::Dumper -e'$_=" a b c"; print Dumper(split /\s+/, $_)' $VAR1 = ''; $VAR2 = 'a'; $VAR3 = 'b'; $VAR4 = 'c';
      Using your definition, there are 4 fields here (list indices 0..3)

      My definition is what a user of Sort::Fields would naturally count as a field (ignoring initial whitespace), before its musty innards get hold of it. In perl terms, this would be along the lines of:

      perl -MData::Dumper -e' $_=" a b c"; print Dumper(split)' $VAR1 = 'a'; $VAR2 = 'b'; $VAR3 = 'c';
      Using my definition, there are 3 fields here (list indices 0..2)

      I claim that Sort::Fields already will ignore leading whitespace in any field (my definition) except field 1. When there exists leading whitespace in what I call field 1, the currently implemented split in Sort::Fields will return a null for field 1 (your definition).

      Is this a good description of the situation?

        Ah, I think we both have different definitions of fields.

        Yay! I've been trying to point out the disconnect between what you think is a field and what you tell Sort::Fields is a field since the beginning.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (13)
As of 2014-07-30 15:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (235 votes), past polls