Ruen: Array nach "+" Splitten ?!!

Hi,

also ich lese Mp3 Dateien ein, die so heissen artist+titel.mp3
Nun will ich aber dass dieser Name gesplittet wird nach dem Zeichen +
und artist und titel als id3-tag richtig in die entsprechende Datei
eingefügt wird.
Blos leider gibt mein Script Fehlermeldungen aus :/
Bitte helft mir!
Danke!!!!

Hier nun mein Script:

#!/usr/bin/perl -w
use strict;
use MP3::Info;
use CGI::Carp qw(fatalsToBrowser);

#Variablen definieren
my $s1_verzeichnis = "/local/";

#Mp3 Ordner einlesen
opendir(DIR2, $s1_verzeichnis) || print "$s1_verzeichnis nicht vorhanden\n";

my @Found = readdir(DIR2);
        foreach my $mp3 (@Found) {
                if($mp3 =~ /.+.mp3/) {
                        my $tag = get_mp3tag($s1_verzeichnis.'/'.$mp3);         #Von was er den Tag auslesen soll
                        my $title = $tag->{TITLE};                              #Title der Mp3 auslesen
                        my $artist = $tag->{ARTIST};                            #Artist der Mp3 auslesen
                        my $album = $tag->{ALBUM};                              #Album der Mp3 auslesen

my @dateiname = split(/'+'/,$mp3);
                        print "$dateiname[0] - $dateiname[1]\n";
                        } else {
                        print "$mp3 ist keine .Mp3 Datei \n";
                        }
                }

  1. Blos leider gibt mein Script Fehlermeldungen aus :/

    Aha, und welche?

    if($mp3 =~ /.+.mp3/) {

    Das + Zeichen ist ein spezielles Zeichen in RegExp du musst es maskieren.

    Struppi.

    1. Blos leider gibt mein Script Fehlermeldungen aus :/

      Aha, und welche?

      Sorry :) vergessen zu posten.
      Hier:
      [Fri Jun 24 12:50:44 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 21.
      [Fri Jun 24 12:50:44 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 21.

      if($mp3 =~ /.+.mp3/) {

      Das + Zeichen ist ein spezielles Zeichen in RegExp du musst es maskieren.

      Ah, cool danke, aber funktioniert noch net s.h. oben die Fehlermeldung

      Struppi.

      1. Hallo,
        Versuch mal zwecks debug:

          
        print $mp3 ."\n";  
        
        

        if($mp3 =~ /.+.mp3/) {

        scheint als ob die variable leer ist.

        gruss

        --
        no strict;
        no warnings;
        Ich weiss es nicht, aber ich bin mir nicht sicher.
        Gold kann man essen, es muss nur flüssig genug sein.
        1. Hallo,
          Versuch mal zwecks debug:

          print $mp3 ."\n";

          
          > > > >                 if($mp3 =~ /.+\.mp3/) {  
          > scheint als ob die variable leer ist.  
          >   
          > gruss  
            
          Hi,  
            
          nein, diese ist nicht leer  
          ergebnis:  
          aaaa+bbbbbb.mp3  
            
          hmmm....  
          krig immer den Fehler:  
            
          okey ist keine .Mp3 Datei    <-- weil es keine .mp3 ist  
          aaaa+bbbbbb.mp3            <-- die mp3 die er findet, ist auch nur eine stimmt so  
          [Fri Jun 24 13:11:36 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 22.  
          [Fri Jun 24 13:11:36 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 22.  
            
          Und der geht von Zeile 21 aus.  
            
          Hilfe :(  
            
          Danke ^^  
          
          
          1. Und der geht von Zeile 21 aus.

            Diese wahrscheinlich:
            my @dateiname = split(/'+'/,$mp3);

            Du musst das plus zeichen maskieren!

            Struppi.

            1. Und der geht von Zeile 21 aus.

              Diese wahrscheinlich:
              my @dateiname = split(/'+'/,$mp3);

              Du musst das plus zeichen maskieren!

              Struppi.

              Dann bleibt 1 Fehler bestehen:

              [Fri Jun 24 13:23:15 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 22.
              aaaa+bbbbbb.mp3 - <-- $dateiname[0] gibt er aus das Minus auch aber $dateiname2 fehlt und $dateiname1 sollte ja eigentlich nur das aaaa sein und $dateiname2 das bbbbbbbb

              1. Dann bleibt 1 Fehler bestehen:

                [Fri Jun 24 13:23:15 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 22.
                aaaa+bbbbbb.mp3 - <-- $dateiname[0] gibt er aus das Minus auch aber $dateiname2 fehlt und $dateiname1 sollte ja eigentlich nur das aaaa sein und $dateiname2 das bbbbbbbb

                Dann änder mal die Zeile:
                print "$dateiname[0] - $dateiname[1]\n";

                in:
                print "$mp3-> $dateiname[0] - $dateiname[1]\n";
                Struppi.

                1. Dann bleibt 1 Fehler bestehen:

                  [Fri Jun 24 13:23:15 2005] instrumentaltag.pl: Use of uninitialized value in concatenation (.) or string at Sonstiges/Perl/instrumentaltag.pl line 22.
                  aaaa+bbbbbb.mp3 - <-- $dateiname[0] gibt er aus das Minus auch aber $dateiname2 fehlt und $dateiname1 sollte ja eigentlich nur das aaaa sein und $dateiname2 das bbbbbbbb

                  Dann änder mal die Zeile:
                  print "$dateiname[0] - $dateiname[1]\n";

                  in:
                  print "$mp3-> $dateiname[0] - $dateiname[1]\n";
                  Struppi.

                  Nein,

                  denn es soll ja so aussehen:
                  print "$dateiname[0] - $dateiname[1]\n";
                  Ergebniss: aaaaa - bbbbb
                  und nicht:
                  print "$dateiname[0] - $dateiname[1]\n";
                  aaaa+bbbbb.mp3 -

                  1. Dann änder mal die Zeile:
                    print "$dateiname[0] - $dateiname[1]\n";

                    in:
                    print "$mp3-> $dateiname[0] - $dateiname[1]\n";
                    Struppi.

                    Nein,

                    du kennst den Begriff debugging?

                    Es geht nur darum rauszufinden, ob in $mp3 das steht was du erwartest.

                    Struppi.

                    1. Dann änder mal die Zeile:
                      print "$dateiname[0] - $dateiname[1]\n";

                      in:
                      print "$mp3-> $dateiname[0] - $dateiname[1]\n";
                      Struppi.

                      Nein,

                      du kennst den Begriff debugging?

                      Es geht nur darum rauszufinden, ob in $mp3 das steht was du erwartest.

                      Struppi.

                      Missverständniss sorry,

                      nein steht es nicht drinnen, denn es wird nicht gesplittet, sondern bleibt so bestehen.
                      aaaa+bbbbbbb.mp3

                      Warum tut er das nicht ?!

                      Danke schonmal

                      1. nein steht es nicht drinnen, denn es wird nicht gesplittet, sondern bleibt so bestehen.
                        aaaa+bbbbbbb.mp3

                        Warum tut er das nicht ?!

                        Weil das split falsch ist (ist mir aber auch grad erst aufgefallen)

                        use Data::Dumper;
                        my $mp3 = "aaaa+bbbbbbb.mp3";
                        my  @dateiname = split(/+/,$mp3);
                        print Dumper @dateiname;

                        Danke schonmal

                        Struppi.

                        1. Jipppieeeee... ^^ ich danke dir/euch für eure schnelle hilfe =)

                          Thx a lot
                          Ruen

                          1. Schwere Geburt :)

                            Jipppieeeee... ^^ ich danke dir/euch für eure schnelle hilfe =)

                            wohl eher nur Struppi!

                            gruss

                            --
                            no strict;
                            no warnings;
                            Ich weiss es nicht, aber ich bin mir nicht sicher.
                            Gold kann man essen, es muss nur flüssig genug sein.
      2. Das + Zeichen ist ein spezielles Zeichen in RegExp du musst es maskieren.
        Ah, cool danke, aber funktioniert noch net s.h. oben die Fehlermeldung

        Ich hab die Zeile 21 übersehen, da gilt das gleiche.
        Wenn du nach dem '+' Zeichen suchst musst du diese maskieren.

        Struppi.

    2. if($mp3 =~ /.+.mp3/) {

      Das + Zeichen ist ein spezielles Zeichen in RegExp du musst es maskieren.

      Das war übrigens Blödsinn, da du ja hier nur testen willst, ob die Dateiendung .mp3 ist.

      Du willst sowas:
      if($mp3 =~ /.mp3$/) {

      Struppi.

      Struppi.