Avatar billede avnes Nybegynder
08. oktober 2004 - 19:44 Der er 11 kommentarer

Sortere filer efter last modified

Hej

Jeg øsnker at vise alle filer i et directory sorteret efter dato.
Koden nedenfor viser desværre de nyeste filer sist, og ikke først som jeg ønsker det.

chdir( $dir );
  my(@files) = <*.png>;
  my($file) ="";
  foreach $file( @files ) {
    if( !-d $file ) {
      print "$file\n";
    }
  }

det sorterer desværre
Avatar billede avnes Nybegynder
08. oktober 2004 - 19:45 #1
nogen som har en kode eksempel som sorterer rigtig, men de nyeste filer først.
Avatar billede avnes Nybegynder
08. oktober 2004 - 19:47 #2
det skal siges at jeg kender til for eksempel:
parse_dir(`ls -lt $dir`)
men jeg vil gerne have noget kode som kan køre både på Windows og Linux...
Avatar billede avnes Nybegynder
08. oktober 2004 - 19:54 #3
hmm..min kode sorterer måske på navn..fordi mine filer er baseret på unix timestamp..men jeg vil gerne have den sorteret på dato
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 20:08 #4
Den her virker måske:

use strict;
use File::Spec;
use File::stat;
opendir(DIR,"..");
my @savedFiles;
while(my $entry=readdir(DIR)) {
    my $filename=File::Spec->catfile("..",$entry);
    next unless (-f $filename);
    push(@savedFiles,[$entry,stat($filename)->mtime]);
}
close(DIR);
                                                                               
# sort files by modification time (newest first)
@savedFiles=sort { $b->[1] <=> $a->[1] } @savedFiles;
my($f);
for $f (@savedFiles) {
  print "$f->[0]\n";
}
Avatar billede avnes Nybegynder
08. oktober 2004 - 21:09 #5
Det var tet på. Den virker ikke 100%, men med din hjælp er jeg kommet videre, så post et svar, så acceptere jeg den :)
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 21:16 #6
ikke 100% ??
Avatar billede avnes Nybegynder
08. oktober 2004 - 21:21 #7
den returnede ingenting.
jeg lavede først en
chdir( $dir );
og ændret '..' til '.' i din kode så virket den
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 21:24 #8
Nåh, ja, ok, det er lige på det punkt ikke så pænt, men
det har da virket i en sammenhæng en gang ;)

Og, nej tak, jeg samler ikke på point. Svar selv, accepter eget svar.
Avatar billede avnes Nybegynder
08. oktober 2004 - 21:27 #9
kom nu. post svar :P
Avatar billede erikjacobsen Ekspert
08. oktober 2004 - 21:31 #10
Jeg samler ikke på point
Avatar billede avnes Nybegynder
15. oktober 2004 - 15:32 #11
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester