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

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

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

Mitglied: 140913
Solution 140913 Aug 23, 2019 updated at 11:35:42 (UTC)
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";  
}
Member: BadFsaadKl
BadFsaadKl Aug 23, 2019 at 12:05:51 (UTC)
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.