moritzhd
Goto Top

Perl Verzeichnis auslesen und erste Datei zurückgeben

Hey,

ich habe ein Problem. Ich möchte gerne eine .csv Datei zippen. Die .csv Datei und mein Perl Programm liegen in einem Ordner. Jedoch möchte ich gerne das mein Perl den aktuellen Ordner durchsucht und die ganzen Dateien dann nach Datum sortiert, und mir dann am besten die neueste Datei in dem Ordner zippt. Kann mir jemand meinen Code im Anhang korrigieren oder sagen was ich machen muss? Wäre nett. Liebe Grüße


 
my $verz = cwd();

my $dir = $verz;
my @dir;

opendir (DIR, $dir);
@dir=readdir(DIR);
closedir(DIR);

@dir = sort { -M "$dir/$a" <=> -M "$dir/$b" } (@dir);  
foreach (@dir) {
	if ($_ =~ m!\.CSV!) {
		print  $_."\n" ;  
	}#end if
}#end foreach

Content-ID: 257022

Url: https://administrator.de/contentid/257022

Ausgedruckt am: 24.11.2024 um 05:11 Uhr

114757
114757 08.12.2014 aktualisiert um 10:22:38 Uhr
Goto Top
moritzhd
moritzhd 08.12.2014 um 11:09:47 Uhr
Goto Top
aber die module die man dazu verwendet muss man ja auch erst installieren, das ist das was ich eigentlich nicht will. Gibt es noch eine andere Idee anhand von meinem code.

Das mit dem zippen habe ich schon, das läuft auch alles, mir geht es nur darum das mir perl die neueste datei ausgibt.

Gruß
colinardo
Lösung colinardo 08.12.2014 aktualisiert um 14:23:26 Uhr
Goto Top
Hallo moritzhd,
mit deiner Variante z.B. so
#!/usr/bin/perl
my $current_dir = ".";  
my $latest_csv_file = "";  

opendir ($DIR, $current_dir);
my @files=readdir($DIR);
closedir($DIR);

@files = sort { -M "$current_dir/$a" <=> -M "$current_dir/$b" } @files;  
foreach (@files) {
	if ($_ =~ /\.csv$/i) {
		$latest_csv_file = $_;
		last;
	}
}
print $latest_csv_file."\n";  
(getestet auf einem Ubuntu Linux)

Grüße Uwe