Hello,

I'm wondering more good or Perlish code.

Strings are in formed "wwwHHMM", from "MON0000" to "SUN2359".
So all data in good order is:
@week = qw(MON TUE WED THU FRI SAT SUN);
for my $w (@week) {
  for my $HH ('00' .. '23') {
    for my $MM ('00' .. '59') {
      push @all, $w . $HH . $MM;
    }
  }
}

So for example,
&sortByWeek('FRI0101', 'TUE0202', 'MON2359')
is favoured to return
('MON2359', 'TUE0202', 'FRI0101')

My code is below, not checked well,
but I think it is too cheap, or not tricky,
I'm searching another...

sub sortByWeek {
  my @in = @_;
  my %WeekNum = ('MON'=>0, 'TUE'=>1....);
  my @WeekStr = ('MON', 'TUE'....);
  for (@in) {
    substr($_,0,3) = $WeekNum{(substr($_,0,3)} . "\x00\x00"
     if defined $WeekNum{(substr($_,0,3)};
  }
  @in = sort @in;
  for (@in) {
    substr($_,0,3) = $WeekStr[substr($_,0,1)]
     if substr($_,0,3) =~ /[0123456]\x00\x00/;
  }
  return @in;
}

Hirosi Taguti
[EMAIL PROTECTED]
_______________________________________________
Perl-Unix-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to