in reply to Pascucci Paradigm for ordered operations on a homogenous hash (specificlaly, mkdir from hash)

Why map in void context? mkdir $DIR{$_} for sort { length $DIR{$a} <=> length $DIR{$b} } keys %DIR; But you're not using the hash keys for anything other than accessing the hash elements. mkdir $_ for sort { length $a <=> length $b } values %DIR; That could be done with a Schwartzian transform. mkdir $_->[0] for sort { $a->[1] <=> $b->[1] } map [ $_, length $_ ], values %DIR; Finally, though I may be wrong, it appears to me due to your peculiar definition of order that what you really want to do is mkdir $_ for sort { $a =~ tr[/][] <=> $b =~ tr[/][] } values %DIR; Or with a Schwarzian transform: mkdir $_->[0] for sort { $a->[1] <=> $b->[1] } map [ $_, tr[/][] ], values %DIR; Update: good point; MrNobo1024++

Makeshifts last the longest.

  • Comment on Re: Pascucci Paradigm for ordered operations on a homogenous hash (specificlaly, mkdir from hash)
  • Select or Download Code

Replies are listed 'Best First'.
Re: Re: Pascucci Paradigm for ordered operations on a homogenous hash (specificlaly, mkdir from hash)
by MrNobo1024 (Hermit) on Aug 18, 2002 at 20:25 UTC
    The length builtin is fast. It dosen't need to calculate the string length, since the SVt_PV struct has that built in. The Schwartzian transform is good for sorting by an expensive function, but all that array creation/dereferencing will only slow things down with a fast function like length.

    --MrNobo1024
    s]]HrLfbfe|EbBibmv]e|s}w}ciZx^RYhL}e^print