[Cologne-pm] Felder eines Arrays ausgeben

Robert Meiser Robert.Meiser at rrz.uni-koeln.de
Wed Mar 10 17:58:01 CST 2004


On Wed, 10 Mar 2004, A. Pagaltzis wrote:

Hmmmm....
Hallo Aristoteles,

> Hallo Robert,
>
> * Robert Meiser <Robert.Meiser at rrz.uni-koeln.de> [2004-03-10 15:35]:
> > Wenn ich den Bereichsoperator im Programmcode verwende
> > wird offensichtlich
> >   "0..3"
> > zu
> >   "0,1,2,3"
> > interpoliert
> >
> > Das ist gut!
> >
> > Wenn ich aber
> >   $Param="0..3"
> >   print @Datensatz[$Param]
> > versuche, tut er dies leider nicht.
>
> Natürlich, du verwendest einen String, der als Zahl interpretiert
> nur "0" ergibt, als Index. Das kann nicht funktionieren.

Ok. Jetzt verstehe ich schon mal was da vor sich geht

> > Wie bewege ich nun das Programm dazu, diesen String korrekt zu
> > interpolieren?
>
> Du musst eine Liste von Zahlen verwenden.
>
>     @Param = ( 0 .. 3 )
>     print @Datensatz[ @Param ];

Schon klar, aber wie kriege ich den String
  $param ="0..3"
in die Liste
  (0..3)
verwandelt?

Ich bastele nämlich die Parameter nach entsprechender Bearbeitung so
zusammen:
foreach $param (@params) { # @params=(-2,2-3,1,6-)
  ...
  verwurste Parameter
  ...
  $param = join ("", ($startfeld, $operator, $Endfeld)); # = x..y
  push (@cleanparams,$param);
}
# @cleanparams ist nun  (0..2,2..3,1,6..$#Datensatz)

und versuche dann genau was du auch tust:
  print  @Datensatz[@cleanparams];

aber er scheint die einzelnen Elemente in @cleanparams ebenfalls als Zahl
zu interpretieren. Wie gewöhne ich ihm das ab?

Kann leider gerade nicht testen, aber ist der Trick vielleicht ohne join
alle parameterbestandteile einzeln zu pushen?

> * Robert Meiser <Robert.Meiser at rrz.uni-koeln.de> [2004-03-10 15:35]:
> > Sorry, war leider ein Schnellschuß. Hab inzwischen
> > herausgefunden, daß mein Freund "eval" heißt.
>
> Nein, eval() ist nicht dein Freund.

Gruß
Robert (der immer noch keinen Freund hat :-()




More information about the Cologne-pm mailing list