map und Array
am 12.03.2007 15:48:22 von Jan Teune
Moin NG,
kurze Frage, wahrscheinlich steh ich nur grade auf dem Schlauch...
wie kann ich mittles der map() Funktion jedes Element eines Arrays
an eine scalare Variable konkatenieren?
Mittels $var = map {$var.$_} @array;
komm ich leider nur an die Anzahl der Elemente, jedoch
nicht an den Inhalt...kann mir einer sagen, wo der Denkfehler
liegt?
Gruss
Jan
Re: map und Array
am 12.03.2007 15:54:27 von Frank Seitz
Jan Teune wrote:
> kurze Frage, wahrscheinlich steh ich nur grade auf dem Schlauch...
>
> wie kann ich mittles der map() Funktion jedes Element eines Arrays
> an eine scalare Variable konkatenieren?
> Mittels $var = map {$var.$_} @array;
> komm ich leider nur an die Anzahl der Elemente, jedoch
> nicht an den Inhalt...kann mir einer sagen, wo der Denkfehler
> liegt?
Falscher Ansatz, nimm join: $var = join '',@array;
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: map und Array
am 12.03.2007 16:01:52 von Frank Seitz
Frank Seitz wrote:
> Jan Teune wrote:
>>
>>kurze Frage, wahrscheinlich steh ich nur grade auf dem Schlauch...
>>
>>wie kann ich mittles der map() Funktion jedes Element eines Arrays
>>an eine scalare Variable konkatenieren?
>>Mittels $var = map {$var.$_} @array;
>>komm ich leider nur an die Anzahl der Elemente, jedoch
>>nicht an den Inhalt...kann mir einer sagen, wo der Denkfehler
>>liegt?
>
> Falscher Ansatz, nimm join: $var = join '',@array;
Nachtrag: vor dem Gleichheitszeichen sollte noch ein Punkt stehen.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: map und Array
am 12.03.2007 16:08:02 von Jan Teune
Jau...genau das...super...danke schön... :-)
Frank Seitz schrieb:
> Frank Seitz wrote:
>> Jan Teune wrote:
>>> kurze Frage, wahrscheinlich steh ich nur grade auf dem Schlauch...
>>>
>>> wie kann ich mittles der map() Funktion jedes Element eines Arrays
>>> an eine scalare Variable konkatenieren?
>>> Mittels $var = map {$var.$_} @array;
>>> komm ich leider nur an die Anzahl der Elemente, jedoch
>>> nicht an den Inhalt...kann mir einer sagen, wo der Denkfehler
>>> liegt?
>> Falscher Ansatz, nimm join: $var = join '',@array;
>
> Nachtrag: vor dem Gleichheitszeichen sollte noch ein Punkt stehen.
>
> Grüße
> Frank
Re: map und Array
am 13.03.2007 08:28:56 von Ferry Bolhar
Jan Teune:
> wie kann ich mittles der map() Funktion jedes Element eines Arrays
> an eine scalare Variable konkatenieren?
^^^^^^^^^^^
Die Frage wurde ja schon beantwortet, aber das schießt in Punkto
Anglizismen jedenfalls den Vogel ab!
SCNR, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: map und Array
am 13.03.2007 09:51:23 von Frank Seitz
Ferry Bolhar wrote:
> Jan Teune:
>>
>>wie kann ich mittles der map() Funktion jedes Element eines Arrays
>>an eine scalare Variable konkatenieren?
> ^^^^^^^^^^^
> Die Frage wurde ja schon beantwortet, aber das schießt in Punkto
> Anglizismen jedenfalls den Vogel ab!
Deine Unterstreichung zeigt zwar in den Wald, aber Du
meinst bestimmt "konkatenieren". Das ist ein in der Informatik
absolut übliches Wort. Guckst Du hier:
http://de.wikipedia.org/wiki/Konkatenation_%28Listen%29
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: map und Array
am 13.03.2007 16:50:05 von Ferry Bolhar
Frank Seitz:
> Deine Unterstreichung zeigt zwar in den Wald, aber Du
> meinst bestimmt "konkatenieren".
Ja. Eigenartig übrigens, dass sie in den Wald zeigt; bei mir tut
sie das nicht, auch nicht in deiner Antwort, in der du den
betreffenden Satz zitiert hast. Aber es war ja wohl nicht allzu
schwer zu erraten. ;-)
> Das ist ein in der Informatik
> absolut übliches Wort. Guckst Du hier:
> http://de.wikipedia.org/wiki/Konkatenation_%28Listen%29
OK, ich bin kein Informatiker, mag sein, dass es dort wirklich
üblich ist, aber mir ist nunmal Deutsch lieber, wenn es eine
deutsche Alternative für ein englisches Wort gibt. Ich musste
wirklich erst eine Zeitlang überlegen, was der OP eigentlich
will.
Im Wiki stehts übrigens auch genauso drin: "zwei Listen zu
einer einzigen Liste zusammenzufügen". Oder noch einfacher
"anhängen" bzw. "verbinden". Abgesehen davon, dass das
der OP (wenn man die Definition genau nimmt) gar nicht
will (er will ja nicht zwei Listen, sondern nur eine Liste und
einen Skalar zusammenfügen), wäre seine Frage also IMHO
"Wie kann ich mittels der map() Funktion jedes Element eines
Arrays an eine skalare Variable anhängen/mit einer skalaren
Variable verbinden"?
verständlicher gewesen.
Im Wiki wird übrigens nur das Hauptwort "Konkatenation"
genannt, nicht das darauf aufgebaute Verb. Vielleicht kam mir
der Satz auch deswegen so exotisch vor.
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: map und Array
am 13.03.2007 17:09:01 von Frank Seitz
Ferry Bolhar wrote:
> Frank Seitz:
>>
>>Deine Unterstreichung zeigt zwar in den Wald, aber Du
>>meinst bestimmt "konkatenieren".
>
> Ja. Eigenartig übrigens, dass sie in den Wald zeigt; bei mir tut
> sie das nicht, auch nicht in deiner Antwort, in der du den
> betreffenden Satz zitiert hast.
Ich schätze, Du hast einen Proportionalfont eingestellt.
Ein Monospaced Font ist für News praktischer, zumal hier
ja auch Code gepostet wird.
> Aber es war ja wohl nicht allzu schwer zu erraten. ;-)
Naja, bei mir wurde die Markierung unter "jedes Element"
gesetzt, was mir nicht wie ein Anglizismus aussah ;)
> Im Wiki stehts übrigens auch genauso drin: "zwei Listen zu
> einer einzigen Liste zusammenzufügen". Oder noch einfacher
> "anhängen" bzw. "verbinden". Abgesehen davon, dass das
> der OP (wenn man die Definition genau nimmt) gar nicht
> will (er will ja nicht zwei Listen, sondern nur eine Liste und
> einen Skalar zusammenfügen)
Er wollte Zeichenketten zusammenfügen. Das ist auf der
Wikipedia-Seite auch beschrieben.
Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Re: map und Array
am 17.03.2007 01:57:00 von Mirko Westermeier
Jan Teune schrieb:
> wie kann ich mittles der map() Funktion jedes Element eines Arrays
> an eine scalare Variable konkatenieren?
map { $var .= $_ } @array; # Holzhammer-map :-(
Das ist aber übler Missbrauch und macht schlechtes Karma. Hier ein paar
Alternativen:
$var .= join('' => @array);
$var .= $_ for @array;
{ local $" = ''; $var .= "@array" }
$var =~ s/$/$_/ for @array;
$var .= eval join '.' => map { qq("\Q$_\E") } @array;
use List::Util qw( reduce ); $var .= reduce { $a . $b } @array;
Mit freundlichem Gruß
Mirko Westermeier
--
Schmeddingstrasse 123 g, 48149 Muenster,
E-Mail: , OpenPGP-Key-ID: 0x730E195D
Key fingerprint: 55A8 9646 9B58 60AC B5BC 9661 FDD4 93C0 730E 195D
E-Mails von mir sind signiert. Unsignierte E-Mails sind nicht von mir.
Re: map und Array
am 19.03.2007 12:25:05 von Ferry Bolhar
Mirko Westermeier:
> Das ist aber übler Missbrauch und macht schlechtes Karma.
> $var .= eval join '.' => map { qq("\Q$_\E") } @array;
Das nicht???
> use List::Util qw( reduce ); $var .= reduce { $a . $b } @array;
Na, viel umständlicher geht's aber wirklich nicht mehr.
Wozu ein Modul laden, wenn man mit den Möglichkeiten des
Core auch auskommt?
Was stört dich an
map { $var .= $_ } @array;
eigentlich so? Nur, dass map's Rückgabewert verworfen wird?
Naja. Es gibt Schlimmeres. Sicher ist
$var .= $_ for @array;
schöner, aber ich finde den map-basierenden Ansatz auch nicht
so schlimm.
Deine beeindruckende Liste vom Möglichkeiten beweist nur
einmal mehr: TIMTOWTDI! ;-)
LG, Ferry
--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol@adv.magwien.gv.at
Re: map und Array
am 22.03.2007 02:09:22 von Mirko Westermeier
Na hallo! Ferry Bolhar schrieb:
> Mirko Westermeier:
>
>> Das ist aber übler Missbrauch und macht schlechtes Karma.
[...]
>> $var .= eval join '.' => map { qq("\Q$_\E") } @array;
>
> Das nicht???
Nein, das ist nur übel. ;-)
>> use List::Util qw( reduce ); $var .= reduce { $a . $b } @array;
>
> Na, viel umständlicher geht's aber wirklich nicht mehr.
> Wozu ein Modul laden, wenn man mit den Möglichkeiten des
> Core auch auskommt?
Hallo? Die Lösung mit reduce ist die mit Abstand coolste die mir
eingefallen ist! Nun mach mir die mal nicht madig! ;-)
> Was stört dich an
>
> map { $var .= $_ } @array;
>
> eigentlich so? Nur, dass map's Rückgabewert verworfen wird?
Es wird halt nur mit Nebenwirkung gearbeitet, obwohl das Killerfeature
von map ja gerade ist, dass man _nicht_ mit Nebenwirkungen arbeiten
muss. Selbst wenn man hier die Rückgabeliste von map behielte, hätte man
nichts sinnvolleres als die Entstehungsgeschichte von $var.
> Naja. Es gibt Schlimmeres. Sicher ist
>
> $var .= $_ for @array;
>
> schöner, aber ich finde den map-basierenden Ansatz auch nicht
> so schlimm.
Nein, schlimm ist das alles nicht. Aber es gibt Lösungen, die viele
Perl-Programmierer als schön bezeichnen würden und andere. Mir ist
absolut keine map-Lösung für dieses "Problem" eingefallen, die man mit
gutem Gewissen als schön bezeichnen könnte.
> Deine beeindruckende Liste vom Möglichkeiten beweist nur
> einmal mehr: TIMTOWTDI! ;-)
Ja, und nur darum ging's einklich...
Beste Grüße
join qw xrk Mi o x
--
Schmeddingstrasse 123 g, 48149 Muenster,
E-Mail: , OpenPGP-Key-ID: 0x730E195D
Key fingerprint: 55A8 9646 9B58 60AC B5BC 9661 FDD4 93C0 730E 195D
E-Mails von mir sind signiert. Unsignierte E-Mails sind nicht von mir.