Ruen: Leerzeichen von `pwd` entfernen ?

Hi nochmal,

so noch ein problem was ich gerne lösen würde aber nicht schaffe...

my $what = "txt";
my $akt_verz = pwd;
my $Verzeichnis = "./";
my $URIVerzeichnis = "$Verzeichnis";
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!";
foreach my $dat (@Dateien) {
 if($dat =~ /.+.$what*/) {
   $c ++;
   next unless -f $dat;
   my $fileSize = -s _;
   my $groesse = $fileSize/1000000;
   print "blablabla\n";
  }
 if (-d $dat) {
   foreach my $dat (@Dateien) {
    if (-d $dat) {
     chdir($akt_verz.'/'.$dat);
     opendir(DIR, $akt_verz.'/'.$dat);
     print "$akt_verz.'/'.$dat";
     print "\n";
     my @Dateien = readdir(DIR);
       foreach my $dat (@Dateien) {
................

Bei dem chdir den ich aufrufe chdir($akt_verz.'/'.$dat);
Setzt er mir ein leerzeichen nach dem $akt_verz und fügt dann /$dat hinzu.
Dass sieht dann so aus:
/home/user/Sonstiges /ordner2

Das funktioniert dann aber leider nicht mit der 2. opendir angabe da das leerzeichen da ist.
Wie kriege ich dieses nun weg ?

Danke!
Ruen

  1. Moin.

    my $akt_verz = pwd;

    $act_verz ~= s/\s//s;

    siehe auch http://de.selfhtml.org/cgiperl/sprache/regexpr.htm#suchen_ersetzen.

    Gruß Frank

    1. Oh, Fehler!

      $act_verz ~= s/\s//s;

      natürlich so: $act_verz =~ s/\s//s;

      Und zur Erklärung: damit werden alle Leerzeichen und sonstige "Leerräume" (\s) durch nichts ersetzt.

      Gruß Frank

      1. Hi,

        $act_verz ~= s/\s//s;
        natürlich so: $act_verz =~ s/\s//s;
        Und zur Erklärung: damit werden alle Leerzeichen und sonstige "Leerräume" (\s) durch nichts ersetzt.

        auch die, die bleiben sollen, z.B. C:\program files\perl --> c:\programfiles\perl

        Sicher nicht das gewünschte - ein $ könnte helfen ...

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Sebastian

          Möglich wäre auch, du drehst den String um,
          nimmst dann das erste Leerzeichen weg
          und drehst den String wieder um.

          Kompliziert, aber tut genau das was du willst.

          Gruß

          Sebastian

          1. use Mosche;

            Möglich wäre auch, du drehst den String um,
            nimmst dann das erste Leerzeichen weg
            und drehst den String wieder um.

            Wie wäre es, einfach die Funktion chomp bzw chop zu benutzen?

            use Tschoe qw(Matti);

            --
            Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
             Webapplikationen in C++ entwickeln
  2. so noch ein problem was ich gerne lösen würde aber nicht schaffe...

    my $what = "txt";
    my $akt_verz = pwd;

    pwd gibt einen String zurück und hängt ein Leerzeichen dran?
    (ich kenne das Programm nicht)

    my $Verzeichnis = "./";
    my $URIVerzeichnis = "$Verzeichnis";

    hier brauchst du keine Anführungszeichen.

    opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!";
    foreach my $dat (@Dateien) {
    if($dat =~ /.+.$what*/) {

    hier reicht:
    if($dat =~ /.$what$/) {

    Das * dürfte sogar falsch sein, da es bedeitet du suchst nach $what null oder mehrmals.

    $c ++;

    $c++;

    next unless -f $dat;
       my $fileSize = -s _;

    Warum _? Tippfehler?
    Es müßte eigentlich:
    "$Verzeichniss$dat" sein. Denk daran opendir wechselt nicht das Verzeichniss.

    if (-d $dat) {
       foreach my $dat (@Dateien) {
        if (-d $dat) {
         chdir($akt_verz.'/'.$dat);
         opendir(DIR, $akt_verz.'/'.$dat);
         print "$akt_verz.'/'.$dat";

    Hier kannst du im gegensatz zu oben doppelte anführungszeichen nehmen:
    "$akt_verz/$dat" finde ich persönlich schöner

    Struppi.