Array nach "+" Splitten ?!!
Ruen
- perl
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";
}
}
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.
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.
Hallo,
Versuch mal zwecks debug:
print $mp3 ."\n";
if($mp3 =~ /.+.mp3/) {
scheint als ob die variable leer ist.
gruss
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 ^^
Und der geht von Zeile 21 aus.
Diese wahrscheinlich:
my @dateiname = split(/'+'/,$mp3);
Du musst das plus zeichen maskieren!
Struppi.
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
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.
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 bbbbbbbbDann ä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 -
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.
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
nein steht es nicht drinnen, denn es wird nicht gesplittet, sondern bleibt so bestehen.
aaaa+bbbbbbb.mp3Warum 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.
Jipppieeeee... ^^ ich danke dir/euch für eure schnelle hilfe =)
Thx a lot
Ruen
Schwere Geburt :)
Jipppieeeee... ^^ ich danke dir/euch für eure schnelle hilfe =)
wohl eher nur Struppi!
gruss
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.
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.