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-Key: 257022

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

Printed on: April 19, 2024 at 06:04 o'clock

Mitglied: 114757
114757 Dec 08, 2014 updated at 09:22:38 (UTC)
Goto Top
Member: moritzhd
moritzhd Dec 08, 2014 at 10:09:47 (UTC)
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ß
Member: colinardo
Solution colinardo Dec 08, 2014 updated at 13:23:26 (UTC)
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