Hallo Zusammen
Bei meinen kleinen Perl versuchen bin ich auf ein Problem gestossen, dass ich einfach nicht lösen kann. Es scheint fast zu einfach, aber ich finde einfach keine Lösung.
Ich habe zwei Regexps die Daten aus Variablen rausholen. Beide brauchen $1. Die zweite Regexp trifft nicht immer zu. Falls sie nicht zutrifft, habe ich noch den alten Wert drin, was ich aber nicht möchte...
Kann ich $1 irgenwie zurücksetzen?
Ach ja, seit ich den interpreter mit -w aufrufe beschwert er sich, dass $1 doppelt verwendet ist "Use of uninitialized value in pattern match (m//) at ../cddbtag.pl line 96.". Kann ich ihm vieleicht auch sagen $3 zu nutzen oder so?
Ich habe folgenden Code geschrieben:
#!/usr/bin/perl -w
use strict;
--Schnipp--
foreach my $disc (@discs) {
my ($genre, $cddb_id, $name) = @$disc;
#Get the disc details
my $detail = $cddb->get_disc_details($genre, $cddb_id);
#Get album & artist
$name =~ /(.*) \/ (.*)/; <---------------
$artists{$1}++;
$albums{$2}++;
#Get the year
$detail->{extd} =~ /YEAR: (\d*)/; <---------------
$years{$1}++;
}
Danke viel mals...
Philippe
Zwei Perl Regexps/Zweimal $1
Re: Zwei Perl Regexps/Zweimal $1
$1 gehoert zu den Sondervariablen, die Perl intern verwendet und duerfen zb. auch nicht vom user veraendert werden.
solche schwierigkeiten, wie du sie hast, umgehe ich mit plausibilitaetspruefungen mit kleinen if-abfragen.
ratte
solche schwierigkeiten, wie du sie hast, umgehe ich mit plausibilitaetspruefungen mit kleinen if-abfragen.
ratte
Re: Zwei Perl Regexps/Zweimal $1
Danke für deine Antwort. Das mit de plausibiltätsprüfungen funktionierte in meinem Fall nicht, da nicht von einer bestimmten Werteart ausgehen konnte.
Ich habe stattdessen eine andere Lösung gefunden; ich packte die beiden Codeteile einfach in geschweifte Klammern. So stören sie sich nicht mehr gegenseitig. Sieht so aus:
#Get album & artist
{$name =~ /(.*) \/ (.*)/;
$artists{$1}++;
$albums{$2}++;}
#Get the year
{$detail->{extd} =~ /YEAR: (\d*)/;
$years{$1}++;}
Trotzdem Danke
Philippe
Ich habe stattdessen eine andere Lösung gefunden; ich packte die beiden Codeteile einfach in geschweifte Klammern. So stören sie sich nicht mehr gegenseitig. Sieht so aus:
#Get album & artist
{$name =~ /(.*) \/ (.*)/;
$artists{$1}++;
$albums{$2}++;}
#Get the year
{$detail->{extd} =~ /YEAR: (\d*)/;
$years{$1}++;}
Trotzdem Danke
Philippe