perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 34
Click for quality!




11.02.2012 / 13:17

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragEin einfaches Programm...
Seitenanfang
...aber ich verstehe es trotzdem nicht ganz.
Ich will eine Liste von Worten von der Standardeingabe in ein array schreiben lassen und dieses dann umgekehrt ausgeben. Dazu benutze ich folgenden 3-Zeiler

@test= <STDIN>;
@test= reverse(@test);
print "@test";

Die Eingabezeilen trenne ich mit ENTER, die gesamte Eingabe beende ich mit CTRL+D.
Es funkioniert auch, hat allerdings eine kleine Macke. Alle Inhalte des arrays, ausser dem ersten haben vor ihrer Ausgabe noch ein Leerzeichen, etwa so:

EINGABE:
eins
zwei

AUSGABE:
zwei
eins

Woran liegt das?

Schöne Grüße,
Martin

Datum: 10.05.2007-12:18

Beitragre: Ein einfaches Programm...
Seitenanfang
Liegt an der Ausgabe, ein Array in einen double-quoted String ("@array") wird interpoliert, bei der Interpolation werden die Arraywerte mit dem Wert der Variablen $" konkateniert (zusammengesetzt).
Das heiszt der Code

print "@array";

ist gleichzusetzten mit

print join $", @array;

$" ist standardmaeszig auf das Leerzeichen gesetzt.

Noch ein Beispiel


{
local $" = ', ';
my @array = qw(aaa bbb ccc);
print "@array";
}

ergibt

aaa, bbb, ccc

Die geschweifen Klammern und das 'local' sind notwendig damit $" nur fuer diesen Codeblock und nicht fuer das gesamte Programm veraendert wird, das koennte naemlich zu Fehlverhalten in anderen Programmstuecken fuehren, also vorsichtig mit der Aenderungen solcher Variablen sein.

Schreib die Ausgabe mal so:


print $_ for @test;

Datum: 10.05.2007-15:37

-






-
-