badfsaadkl
Goto Top

Perl - Dateinamen ermitteln

Hallo zusammen,

ich muss mittels Perl ein kleines Skript schreiben, welches mir anhand einer Wildcard Suche 2 Dateinamen in einem Verzeichnis ermittelt und jeweils in eine Variable zur weiteren Verarbeitung schreibt.

Ausgangslage:
In einem Verzeichnis wird immer ein Filepärchen (exp*.dat & exp*.flg) angeliefert.
Der Filename beginnt immer mit einem exp, danach kommt ein beliebiger/variabler Zahlenwert.

Beide Dateinamen sind bis auf die Endung identisch.
Ich muss nun prüfen, ob in einem Verzeichnis ein Flagfile vorhanden ist, und falls ja, muss ich sowohl das Flagfile und das Datenfile weiter verarbeiten.

In Sachen Perl bin leider noch blutiger Anfänger und hoffe Ihr könnt mir helfen.

Aktuell kämpfe ich noch bei dem Punkt, wie ich bei meiner Prüfung auch den Pfad ($local_dir) mit angebe, sowie wie ich mit den Wildcard die beiden Dateinamen ermitteln kann.

Wenn ich den $flag_file Namen fest angebe, und die Datei im gleichen Verzeichnis liegt, funktioniert schon mal die Prüfung.

Anbei mal meine ersten Schritte:

use strict;
use warnings;
use Net::FTP;

my $ftp;
my $host = "";  
my $user = "";  
my $pass = "";  
my $local_dir = "C:\/Users\/micree14204\/eclipse-workspace\/skriptunterstuetzung\/";  
my $ftp_dir = "";  
my $flag_file = "exp00000.flg";  

if ( -e $flag_file) 
{
	print "Datei $flag_file ist vorhanden\n";  
}
else
{
	print "Datei $flag_file ist nicht vorhanden\n";  
}

Gruß
Michél

Content-ID: 487938

Url: https://administrator.de/forum/perl-dateinamen-ermitteln-487938.html

Ausgedruckt am: 22.12.2024 um 22:12 Uhr

140913
Lösung 140913 23.08.2019 aktualisiert um 13:35:42 Uhr
Goto Top
#!/usr/bin/perl
# Verzeichnis
my $local_dir = '/irgendein/verzeichnis';  
# Verzeichnis öffnen
opendir(DIR,$local_dir);
# flag files suchen und in array speichern
@files = grep(/^exp\d+\.flg$/,readdir(DIR));
# Verzeichnis schließen
closedir(DIR);
# für jedes Flagfile
foreach $file (@files) {
        # dateiname des flagfile in variable speichern
	$flagfile = $file;
        # dateiname des datafile erzeugen .flg durch .dat ersetzen
 	$datafile = $file;
	$datafile =~ s/\.flg$/.dat/i;
	# nur als Beispiel die Daten ausgeben
        print "Flagfile : " .  $local_dir . "/" . $flagfile . "\n";  
	print "Datafile : " $local_dir . "/" . $datafile . "\n";  
}
BadFsaadKl
BadFsaadKl 23.08.2019 um 14:05:51 Uhr
Goto Top
Vielen Herzlichen Dank psuser face-smile

Genau das was ich benötigt habe.
Jetzt kann ich weiter basteln. Werde demnächst aber bestimmt noch die ein oder andere Unterstützung brauchen face-sad.