Schrift
[thread]10151[/thread]

Verzeichnis erreichen



<< >> 7 Einträge, 1 Seite
r2__
 2007-08-20 23:07
#98445 #98445
User since
2007-08-20
4 Artikel
BenutzerIn
[default_avatar]
Hallo.

Eigentlich suche ich nur eine bestimmte Datei in einem Ordner. Problem dabei ist, dass ich den Verzeichnispfad erst auf einer Datenbank holen muss und dann ihn dann versuchen muss zu erreichen
.
Folgendes ist die Situation:

Die erste kleine Hürde ist in der Datenbank den Pfad herauszufinden. Dachte so geht es, macht es aber leider nicht.
Code: (dl )
1
2
3
4
...
print SQL "select VALUE_STR from PARAMS where ID=100;\n";
my $Path=$_;
...

So erhalte ich theoretisch die Variable $Path mit Verzeichnispfad als vordefinierten Inhalt. Von diesem Pfad aus muss ich 2 Verzeichnisse nach oben und 2 andere wieder nach unten. (Ich muss auf einen anderen Rechner, der über diesen Mountpoint zu erreichen ist). In dem Verzeichnis liegt die Datei.
Unter Unix würde es ganz einfach aussehen:
Code: (dl )
 find $Path/../../usr/bin | grep Dat*.lst > $Datei


Wie kann ich dies unter Perl realisieren? Habe schon alles mögliche ausprobiert. Zu beachten ist noch, dass ich keine festen Verzeichnispfade (außer die in der DB und /usr/bin) angeben kann.

Könnt Ihr mir bitte helfen??

Grüße,
r2__
pktm
 2007-08-20 23:36
#98447 #98447
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo r2__!

Datenbanken kannst du mit CPAN:DBI ansprechen.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
nepos
 2007-08-21 10:14
#98460 #98460
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Zum Arbeiten mit Verzeichnis-Pfaden könntest du dir mal CPAN:File::Spec ansehen. Die Funktion splitdir() zerlegt dir den Pfad und gibt dir einen Array zurück. Von dem kannst du dann einfach die letzten beiden Einträge wegwerfen und dann mit catdir() wieder den Pfad zusammenbauen. Vorteil von CPAN:File::Spec wäre auch, dass das Modul alle Aktionen portabel auf verschiedenen Systemen ausführen kann und du dich nicht darum kümmern musst, wie denn nun Pfade aufgetrennt werden.

Und wie pktm schon sagt, für Datenbankzugriffe gibt es CPAN:DBI, das den Datenbankzugriff einfacher und auch sicherer gestaltet, weil dieses Modul auch das korrekte Quoting von Werten für deine Datenbank übernimmt.
r2__
 2007-08-21 14:15
#98466 #98466
User since
2007-08-20
4 Artikel
BenutzerIn
[default_avatar]
Hi.

vielen Dank für die Tipps. Mit splitdir und catdir gehts.
Habe jetzt den Inhalt des gesuchten Ordners im Array @Eintraege. Dort such ich jetzt die Datei "Datei_v1234.jar". wobei sich die Zahlen ändern können. Wie kann ich danach suchen?

Code: (dl )
my @ergebnis = grep(/Datei_v*.jar/,@Eintraege);


Grüße,
r2
renee
 2007-08-21 14:33
#98468 #98468
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
So suchst Du nach einem Dateinamen, mit 'Datei_' und dann keins, eins oder mehrere 'v's, dann ein beliebiges Zeichen und dann 'jar'

Code (perl): (dl )
my @ergebnis = grep{ /Datei_v\d+\.jar/ }@Eintraege;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
r2__
 2007-08-21 15:32
#98479 #98479
User since
2007-08-20
4 Artikel
BenutzerIn
[default_avatar]
merci.
habe es mit
Code: (dl )
my @ergebnis = grep{ /Datei_v.+jar/ }@Eintraege;

hinbekommen. Nun stehe ich aber vor dem Problem, dass ich das Array (enthält mitlerweile nur einen Eintrag) in einen String umwandeln muss, damit ich es weiterbearbeiten kann. Habe es mit join probiert. Dabei erhalte ich die Meldung Can't use string ("Datei_v1234.jar") as a symbol ref while "strict refs" in use at ..
Gibt es noch eine andere Möglichkeit?
r2__
 2007-08-21 15:46
#98480 #98480
User since
2007-08-20
4 Artikel
BenutzerIn
[default_avatar]
ok .. hat sich erledigt


danke nochmal.
<< >> 7 Einträge, 1 Seite



View all threads created 2007-08-20 23:07.