tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
800
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Nov 2004
    Beiträge
    353
    Hallo Leute,

    ich habe eine Datei (*.txt), in der Files aus unterschiedlichen Speicherorten stehen:
    Z:/tmp/testfile
    Z:/tmp/UebungsZylinderkopf.tar
    //sambasrv2/data/desktop/testfile
    C:/bla/bli/

    jetzt habe ich ein Script mit dem ich nur den Dateinamen, sprich nach dem letzten "/" speichern möchte. Also im 1. Filename nur "testfile.

    mein Script sieht bis jetzt so aus:
    PHP-Code:
    ...
    my @filename_arrayfile $job->readfile$file );
    #       print $filename_arrayfile[0]." - erster string";
     
    # handle this with while loop - next step - ok
            
    my $n 0;
            
    # do some initial
            
    my @path;
            
    my @pathfirst;
            
    my $first_path_last_value;
     
            while (
    $filename_arrayfile[$n]){
    #               print "@filename_arrayfile[$n]\n";
     
                    
    $path[$n] = $filename_arrayfile[$n];
                    
    # Ausgabe ok
                    
    @pathfirst split("/"$path[$n]);
                    
    $first_path_last_value $pathfirst[length(@pathfirst)+1];
                    print 
    $first_path_last_value;
                    
    $n++;   
            } 
    leider fällt er bei der Auswertung des Dateinamens mit den zwei vorangestellten "//" (Netzlaufwerk) hin.
    Die Ausgabe sieht dann so aus:

    Code :
    1
    
    testfileUebungsZylinderkopf.tarsambasrv2bli

    Hat jemand eine Idee, wie dies anderst zu lösen ist? Ich arbeite mit Perl v5.8.2 und aix.


    Gruß mkoeni1
     


  2. #2
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hi,

    schau mal hier, so funktioniert es:
    Code perl:
    1
    2
    3
    4
    5
    
    open(fh, '<', 'test.txt');
    while(<fh>){
      $_ =~ s/.*\/(.*)$/$1/g;
      print $_;
    }

    Edit: Ok, Backslash geht nun - wusste garnicht,dass
    es hier auch PERL-BBcodes gibt

    Grüße,
    MArc
    Geändert von MArc (24.04.09 um 17:49 Uhr)
     

  3. #3
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.
    Zitat Zitat von MArc Beitrag anzeigen
    Edit: Hä ?!
    Wieso werden hier die Backslashs gelöscht ?
    Weil du es als PHP Code deklariert hast. Probier's mal mit Perl.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  4. #4
    renee renee ist offline Mitglied Brokat
    Registriert seit
    Jan 2004
    Beiträge
    332
    Warum nicht mit File::Basename

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use File::Basename;
     
    my @files = (
        'Z:/tmp/testfile',
        'Z:/tmp/UebungsZylinderkopf.tar',
        '//sambasrv2/data/desktop/testfile',
        'C:/bla/bli/',
    );
     
    for my $file ( @files ){
        print basename( $file ),"\n";
    }
     

Ähnliche Themen

  1. Perl: .gz Datei entpacken / einlesen
    Von dtm im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 29.11.09, 14:12
  2. perl: während dem einlesen einer datei zeilen löschen
    Von renslow im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 1
    Letzter Beitrag: 01.09.08, 11:29
  3. [Perl] Datei mit Tabulator einlesen
    Von chill0r55555 im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 6
    Letzter Beitrag: 28.03.08, 03:31
  4. Einlesen einer txt Datei
    Von zyclop im Forum Sonstige Sprachen
    Antworten: 6
    Letzter Beitrag: 29.12.05, 17:46
  5. Antworten: 3
    Letzter Beitrag: 11.08.02, 18:45