Anzeige:
Ergebnis 1 bis 7 von 7

Thema: eine weitere array frage (zuviele leerzeichen)

  1. #1
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71

    eine weitere array frage (zuviele leerzeichen)

    wenn ich meinen array in die konsole ausgeben lasse
    macht er zwischen allen einzelnen einträgen im array immer ein leerzeichen

    wie krieg ich das zusätzliche leerzeichen raus ohne gewollte leerzeichen zu verlieren
    sodas alle einzelnen einträge direkt hintereinander stehen ?
    hatte schon was mit @array[1]... versucht
    klappte aber nicht da der array immer unterschiedlich lang ist
    da er sich aus verschiedenen eingaben spontan zusammensetzt :-(

    testbeispiel:
    Code:
    my @array = ("1","2","3","4","5 b","6","7","8","9");
    print("@array");
    bisherige ausgabe
    Code:
    1 2 3 4 5 b 6 7 8 9
    gewünschte ausgabe
    Code:
    12345 b6789
    wie immer für jede hilfe dankbar

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Code:
    print(join('', @array) . "\n");
    chmod -R +t /*

  3. #3
    Registrierter Benutzer
    Registriert seit
    04.07.2006
    Ort
    Herne
    Beiträge
    71
    super klappt :-)

    und auch noch so schnell *freu*

    danke :-)

  4. #4
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    Warum das join?

    Ein einfaches
    Code:
    print @array;
    tut's auch...

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Zitat Zitat von reneeb Beitrag anzeigen
    Warum das join?

    Ein einfaches
    Code:
    print @array;
    tut's auch...
    Ja, das tuts in der Tat auch. Ich hab auch überlegt ob ich das als Alternative auch noch anbiete. Aber, wenn man dann ne Concatenation wie in meinem Beispiel machen möchte gehts schon wieder nicht, weil dann PERL Skalarkontext für den Array annimmt und man dann wunderbar die Anzahl der Elemente da stehen hat. Natürlich kann man auch zuerst print(@array); machen und dann den Rest also in meinem Bsp. print("\n");. Wenn man lustig ist kann man auch mit foreach durchloopen und immer nur ein Element ausgeben und dann wieder das was man dazu haben möchte ausserhalb der Interation, etc., pp., "there's more than one way to do it!"

    Aber am übersichtlichsten und am universal anwendebarsten, wg. Umschiffung o. g. Probleme und weil man schnell doch wieder ein Trennzeichen einfügen kann, find ich halt die Methode mit dem join()...
    chmod -R +t /*

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    Man braucht nicht immer ein neues print zu machen...

    Code:
    print @array,$variable,"\n";
    funktioniert wunderbar. Man beachte die ,. Damit übergibt man print eine Liste! Für alles ein print zu machen ist Perl4-Syntax.

    (Sehr) alt:
    Code:
    print "Test\n";
    print $variable;
    print "\n";
    print @array;
    print "\n";
    Perl5:
    Code:
    print "Test\n",$variable,"\n",@array,"\n"
    Da hier keine Konkatenation gemacht wird, wird @array auch nicht im Skalaren Kontext betrachtet, sondern im Listenkontext. Und damit wird genau das erreicht was der OP wollte.

  7. #7
    Registrierter Benutzer
    Registriert seit
    24.12.2001
    Ort
    anywhere before EOF
    Beiträge
    236
    Stimmt, Listen gehen ja auch noch, ganz vergessen. Kommt der Concatenation, von der Schreibweise natürlich sehr nahe...

    Aber was mir noch eingefallen ist, alternativ könnte man auch den List-Separator noch ändern, also auf den Leerstring setzen, hat halt dann globale Auswirkungen...
    Code:
    $" = '';
    print("@array\n");
    chmod -R +t /*

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •