[Cologne-pm] Felder eines Arrays ausgeben

Robert Meiser Robert.Meiser at rrz.uni-koeln.de
Thu Mar 11 04:20:31 CST 2004


On Thu, 11 Mar 2004, A. Pagaltzis wrote:

> Da musst du wohl die Arme hochkrempeln und parsen.
>     sub parse_range {
>         my ($range) = @_;
>         if( $range =~ m/\A \s* (\d+) \s* \.\. \s* (\d+) \s* \z/x ) {
>             return $1 .. $2;
>         }
>         return $range;
>     }

Genau das mache ich ja. So komme ich ja an meinen String "$1..$2".

>
> > foreach $param (@params) { # @params=(-2,2-3,1,6-)
>                                            ^^^
>
> Das verstehe ich nicht recht. Ist das im Original ein String,
> meinst du eine SUbtraktion, oder was ist das bzw wie kommt der
> Wert an der Stelle zustande?

Ich glaube wir reden aneinander vorbei. Deshalb noch mal die ganze
Geschichte:

# "-" ist als "bis" zu verstehen

sub getFields  {  # Aufruf mit &getFields("F:O:O:B:A:R","-2","5","3-4","3-")

my ($Datensatz, at Params)=@_;
@Datensatz=split (":",$Datensatz);

foreach $Param (@Params) {
 ...

 # parse $Param von Benutzerfreundlicher Range z.B. "-2" durch splitten in
 #    $Startrange="", $operator="-" und $Endrange="2"
 # zu Arrayverträglicher Range mit
 #    $Startrange="0", $operator=".." und $Endrange="2"
 # $cleanparam=join ("", $Startrange,$operator,$Endrange)
 ...
}

Ziel ist nun mit
  print @Datensatz[$cleanparam];
die Ausgabe "FOO" zu erreichen

Mein Grundidee war einfach den Operator ".." zu nutzen um nicht per
Schleife "4..10" in (4,5,6,7,8,9,10) verwandeln zu müssen. Wenn ich im
Programmcode @array=(4..10) eingebe funktioniert das ja auch, wenn
ich jedoch versuche die Range per Variable einzufüttern funktioniert es
nicht. Die Variable wird dann, wie Du ja schon gesagt hast, als
Zahl interpretiert und somit auf  "4" reduziert.

Ist denn dieser Ansatz völlig falsch? Oder gar überflüssig?
Kann man vielleicht den ".."-Operator wirklich nur direkt verwenden?

> Probiere nicht soviel herum. *Lies*. Jeder Array-Index wird für
> sich als Zahl interpretiert.

Das lesen hat mir ja gerade das Problem beschert. Wenn ich nicht
gelesen hätte, wäre ich gar nicht auf die Idee gekommen ".." zu verwenden ;-)

sorry wenn ich mich zu ungenau ausgedrückt hatte

Gruß
Robert

------------

"Höre nicht darauf, was Deine Mitmenschen sagen. Versuche zu verstehen was
sie tatsächlich meinen"




More information about the Cologne-pm mailing list