Schrift
[thread]11524[/thread]

String Konkatenation



<< >> 3 Einträge, 1 Seite
Gast Gast
 2008-03-26 18:28
#107510 #107510
Hallo zusammen,
habe eine recht allgemeine Frage zur String Konkatenation.
Folgender Code:
Code: (dl )
1
2
3
4
5
@arr = qw (q w e r t z);
print @arr;
print "@arr";
print @arr , "\n";
print @arr . "\n";

Die 1. Printanweisung beschert mir ein "qwertz", die 2. ein "q w e r t z", die 3. ein "qwertz" mit Zeilenumbruch, also alles wunderbar.
Die 4. Anweisung gibt dagegen eine "6" (also $#arr + 1) aus???
Gemäß perlop werden Strings mit dem Punkt verknüpft, in diversen Büchern und Tutorials mal mit Punkt, mal mit Komma,
aber wie läßt sich dieser Unterschied erklären?
renee
 2008-03-26 20:11
#107514 #107514
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Die "Verknüpfung" mit Komma ist keine Stringkonkatenation, sondern eine Liste. print kann mehr als ein Argument übergeben bekommen. Noch ein Beispiel mit dem Komma:

my @array = (1,2,3,4);

Da hast Du auch 4 einzelne Elemente und nicht "1234".

Bei print @arr."\n" wird das @arr durch die Stringkonkatenation in einen "Skalaren Kontext" gezwungen. Und der Skalare Kontext eines Arrays liefert die Anzahl der Elemente. Die "6" zeigt Dir also an, dass in dem Array 6 Elemente enthalten sind.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2008-03-28 12:57
#107592 #107592
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei
print "@array\n";
werden deshalb leerzeichen zwischen den elementen ausgegeben, weil die Variable $" standardmaessig ein Leerzeichen enthält

Code (perl): (dl )
print join( $", @array ), "\n";
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 3 Einträge, 1 Seite



View all threads created 2008-03-26 18:28.