Cruz: In Array einfügen

Hallo Leute!

Und hallo Calocybe, du hast mir mal einen Tipp gegeben wie man einen Eintrag in einen Array einfügt, und zwar mit splice und offset 0. Leider sagt mir das so gar nichts, denn ich kann den slpice nur zum löschen einsetzten.

splice @array, start, end;

so wenn ich jetzt end=0 setze, wie gebe ich denn die Variable an, die in den Array eingefügt werden soll?
Und kann man auch mehrere Variablen gleichzeitig in den Array einfügen? (als mehrere Einträge natürlich)

Gruß
Cruz

  1. Hi,

    Und hallo Calocybe, du hast mir mal einen Tipp gegeben wie man einen Eintrag in einen Array einfügt, und zwar mit splice und offset 0. Leider sagt mir das so gar nichts, denn ich kann den slpice nur zum löschen einsetzten.

    also, bevor ich jetzt eine Möglichkeit mit splice ersinne, mach es doch einfach so:

    @array = ($array[0..$x], $new_element, $array[$x+1..-1]);

    Wobei ich jetzt spontan nicht sicher bin, ob es nicht "@array[a..b]" heißen muß statt mit "$". Die "-1" steht übrigens für das letzte Element einer Liste (-2 für das vorletzte usw.).

    Cheatah

    1. hi!

      Und hallo Calocybe, du hast mir mal einen Tipp gegeben wie man einen Eintrag in einen
      Array einfügt, und zwar mit splice und offset 0. Leider sagt mir das so gar nichts, denn
      ich kann den slpice nur zum löschen einsetzten.
      also, bevor ich jetzt eine Möglichkeit mit splice ersinne, mach es doch einfach so:
      @array = ($array[0..$x], $new_element, $array[$x+1..-1]);

      Argl. Man kann es ja auch übertreiben ;-))

      splice @ARRAY, OFFSET [, LÄNGE [, @LISTE]]

      Setzt man keine Länge, wird alles bis zum Ende gelöscht. Setzt man die Länge auf 0, wird die Liste am angegebenen Offset eingefügt.

      Und das steht garantiert auch in der Perl-Dokumentation bei splice (perldoc -f splice).

      bye, Frank!

  2. Hallo Cruz!

    Und hallo Calocybe, du hast mir mal einen Tipp gegeben wie man einen Eintrag in einen Array einfügt, und zwar mit splice und offset 0. Leider sagt mir das so gar nichts, denn ich kann den slpice nur zum löschen einsetzten.

    Mein lieber Cruz, jetzt willst Du mich wohl doch ein bisschen aergern? In dem besagten Thread (<../../sfarchiv/1999_3/t05927.htm>) habe ich auch einen Source-Code gepostet, der nebenbei die Verwendung des splice demonstriert (wenn das auch nicht der eigentliche Zweck war). Aber gut, weil ich heute mal nett bin, erzaehl ich's eben noch mal. Es waere aber trotzdem nicht schlecht, wenn Du einfach mal die Perl-Dokumentation zur Hand nimmst und unter splice nachschaust. Sowas wird eigentlich bei jeder vernuenftigen Perl-Distribution mitgeliefert. Um Dir jetzt einen direkten Link praesentieren zu koennen, schicke ich Dich aber trotzdem mal in die Weiten des Internets: http://www.activestate.com/ActivePerl/docs/lib/Pod/perlfunc.html#item_splice

    splice @array, start, end;

    Nein, wer sagt denn sowas? So ist die Syntax: splice ARRAY,OFFSET,LENGTH,LIST  wobei Du die letzten zwei Parameter auch weglassen kannst, wenn Du sie nicht brauchst.

    Also splice ersetzt aus der Liste ARRAY den Teil, der bei dem Index OFFSET beginnt und LENGTH Elemente lang ist, durch den Inhalt der Liste LIST. Und wenn LIST leer ist bzw. nicht angegeben wird, dann wird der Teil von ARRAY eben durch *nichts* ersetzt, also geloescht. Und wenn LENGTH 0 ist, dann wird eben *kein* Teil des ARRAY durch LIST ersetzt, sprich: LIST wird einfach eingefuegt, naemlich an der Position, die durch OFFSET angegeben ist.

    Wenn Du jetzt also ein Array namens @array hast, und willst da die Variablen $var1 und $var2 und $var3 bei der sechsten Position (offset 5) eifuegen, schreibst Du:
    splice @array, 5, 0, $var, $var, $var3;

    Und jetzt sag mir bitte, dass Du's diesmal endlich verstanden hast... :-/

    Calocybe

    1. Jawoll jetzt habe ich es verstanden.
      Es ist ja nicht so, daß ich unintelligent bin. Aber einem Perl Anfänger fällt es extrem schwer mit der Perldokumentation umzugehen. Und man braucht am Anfang halt mal mehr als ein kurzes Beispiel.
      Und ich finde es nicht besonderes motivierend, daß wenn man denn eine Frage stellt von allen Seiten mit der Perldoc. bombardiert wird. Das Forum ist doch dazu da, daß man Fragen stellen kann! Und wenn dich eine Frage nervt, brauchst du ja nicht darauf zu antworten.

      Cruz

      1. Jawoll jetzt habe ich es verstanden.

        Schoen :-)

        Es ist ja nicht so, daß ich unintelligent bin.

        Den Kommentar in <32571.html> fand ich auch ganz gelungen...

        Aber einem Perl Anfänger fällt es extrem schwer mit der Perldokumentation umzugehen. Und man braucht am Anfang halt mal mehr als ein kurzes Beispiel.

        Naja, ich bin eigentlich auch noch (fast) ein Anfaenger. Zumindest hab ich auch noch nicht so sehr viel damit gemacht. Die Perldoc hat sich ja mittlerweile auch ganz schoen entwickelt. http://www.activestate.com/ActivePerl/docs/ sieht jedenfalls ganz gut aus. Ist uebrigens auch ne umfangreiche FAQ dabei, denn es gibt einfach Probleme, die treten immer wieder auf.

        Und ich finde es nicht besonderes motivierend, daß wenn man denn eine Frage stellt von allen Seiten mit der Perldoc. bombardiert wird. Das Forum ist doch dazu da, daß man Fragen stellen kann!

        Schon, aber man sollte trotzdem erstmal das mit der Perl-Doku versuchen. Die eingebauten Funktionen stehen alle in der Seite namens perlfunc. Wenn das dort nicht verstaendlich oder ausfuehrlich genug ist, kannst Du natuerlich gerne fragen. Nur irgendwie fand ich das mit dem splice dann doch ziemlich einfach.

        Und wenn dich eine Frage nervt, brauchst du ja nicht darauf zu antworten.

        Naja, wenn Du mich schon direkt ansprichst... Ansonsten haette ich wohl wirklich nicht geantwortet, da Cheatah und Frank das ja schon getan haben.

        So, nu reicht's fuer heute.
        Bye, Calocybe