wie Trennzeichen bei split als Variable?

11/04/2013 - 14:51 von Astrid | Report spam
Hallo zusammen,

verwende in einem Perl-Skript u.a. die beiden Befehle

$icols = ($tmp =~ tr/;//);
@werte = split(/\;/,$tmp[$i]);

Jetzt kann es aber sein, dass das Trennzeichen nicht immer ";" ist,
sondern auch mal "," ist.

Wuerde es daher gerne als Variable vorab zuweisen und dann asl
Variable in die beiden Zeilen einbauen.

Habe
$trenn = ';"; gesetzt
und es dann in den beiden Zeilen oben so eingebaut.
Doch das hat leider nicht funktioniert.

Wie kann ich den beiden Zeilen das Trennzeichen als
Variable mit auf den Weg geben?

Gruss, Astrid
 

Lesen sie die antworten

#1 Thomas PointedEars Lahn
11/04/2013 - 17:56 | Warnen spam
Astrid wrote:

verwende in einem Perl-Skript u.a. die beiden Befehle

$icols = ($tmp =~ tr/;//);
@werte = split(/\;/,$tmp[$i]);



Semikolons müssen in Perl-REs nicht escaped werden. Der Parser „weiss“,
dass er sich noch im RE-Kontext befindet.

Jetzt kann es aber sein, dass das Trennzeichen nicht immer ";" ist,
sondern auch mal "," ist.



Solange das Trennzeichen kein spezialles Zeichen in reservierten Ausdrücken
ist, brauchst Du es nicht escapen. “,” ist kein solches Zeichen.

Wuerde es daher gerne als Variable vorab zuweisen und dann asl
Variable in die beiden Zeilen einbauen.

Habe
$trenn = ';"; gesetzt



Das ist syntaktisch fhcsal. *Entweder* Apostroph *oder* Anführungszeichen.

und es dann in den beiden Zeilen oben so eingebaut.



Und *wie*?

Doch das hat leider nicht funktioniert.



„Geht nicht“ ist keine Problembeschreibung.

Wie kann ich den beiden Zeilen das Trennzeichen als
Variable mit auf den Weg geben?



$ perl -e '
use strict;
use warnings;
my $tmp = "foo;bar";
my $trenn = ";";
my $icols = ($tmp =~ tr/$trenn//);
my @werte = split(/$trenn/, $tmp);
print $icols . "" . join("", @werte) . "";
'
1
foo
bar

Was Du mit $tmp[$i] willst, verstehe ich nicht.

Bitte den Nachnamen ergànzen.

PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Ähnliche fragen