Schrift
[thread]12545[/thread]

print von Array zeigt Inhalte mit Leerzeichen getrennt



<< >> 8 Einträge, 1 Seite
pktm
 2008-09-26 15:15
#114945 #114945
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!

Wenn ich ein Array mit print innerhalb von doppelten Anführungszeichen ausgebe werden die Einträge ja mit Leerzeichen getrennt ausgegeben.

Beispiel:
Code: (dl )
1
2
3
4
5
use strict;
use warnings;

my @a = qw(1 a b f);
print "@a";


Warum? Und wo finde ich Erklärungen zu diesem Verhalten?

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
GwenDragon
 2008-09-26 15:19
#114946 #114946
User since
2005-01-17
14746 Artikel
Admin1
[Homepage]
user image
Einen noch kürzeren sinnlosen Titel wie nur
Quote
print
hättest du nicht nehmen können? :(
---
//Modedit Gwendragon: Titel geändert
---

Siehe PerlFAQ5
renee
 2008-09-26 15:22
#114947 #114947
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
perldoc perlvar $"

Code: (dl )
1
2
perl -le '$"=".."; my @array = (1..6); print "@array" '
1..2..3..4..5..6
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/
pktm
 2008-09-26 15:33
#114948 #114948
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
GwenDragon+2008-09-26 13:19:59--
Einen noch kürzeren sinnlosen Titel wie nur
Quote
print
hättest du nicht nehmen können? :(
---
//Modedit Gwendragon: Titel geändert
---

Siehe PerlFAQ5


Natürlich, ich hätte das, worum es mir ging (print) durch "Hilfe!!!" ersetzen können *g*
Findet man ja öfter...

Die FAQ zeigt zwar auf, was passiert, wenn ein Array im Kontext eines interpretierten Strings interpoliert wird, aber sie gibt keine Antwort darauf, warum. Die Antworten wurden ganz rafiniert an der Frage vorbei gegeben :)

Aber jetzt weiß ich wenigstens, was in perlvar steht.

Grüße, pktm
http://www.intergastro-service.de (mein erstes CMS :) )
GwenDragon
 2008-09-26 15:40
#114949 #114949
User since
2005-01-17
14746 Artikel
Admin1
[Homepage]
user image
renee+2008-09-26 13:22:12--
perldoc perlvar $"

Was Renee wohl kurz und knackig sagen will:
Es hängt vom Separator ab.
Quote
$LIST_SEPARATOR
$"
This is like $, except that it applies to array and slice values
interpolated into a double-quoted string (or similar interpreted
string). Default is a space. (Mnemonic: obvious, I think.)
renee
 2008-09-26 15:44
#114950 #114950
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
pktm+2008-09-26 13:33:38--
Die FAQ zeigt zwar auf, was passiert, wenn ein Array im Kontext eines interpretierten Strings interpoliert wird, aber sie gibt keine Antwort darauf, warum. Die Antworten wurden ganz rafiniert an der Frage vorbei gegeben :)


In der neuen Perl-Version wird die Frage besser beantwortet sein. Siehe auch http://svn.perl.org/viewvc/modules/perlfaq/trunk/p...
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/
betterworld
 2008-09-26 16:02
#114952 #114952
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
perldoc perldata:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
Array Joining Delimiter

Arrays and slices are interpolated into double-quoted strings by joining the elements
with the delimiter specified in the $" variable ($LIST_SEPARATOR if "use English;" is
specified), space by default.
The following are equivalent:

$temp = join($", @ARGV);
system "echo $temp";

system "echo @ARGV";


pktm+2008-09-26 13:33:38--
Natürlich, ich hätte das, worum es mir ging (print) durch "Hilfe!!!" ersetzen können *g*
Findet man ja öfter...

Wie Du an Gwens Aktion siehst, ist es durchaus moeglich, einen ausfuehrlicheren Titel zu waehlen... Du bist ja nun wirklich nicht erst seit gestern hier im Forum.

Uebrigens, es hat nicht direkt etwas mit print zu tun, sondern mit der Stringinterpolation. An dem Beispiel in perldata sieht man, dass es auch ohne print passiert. Wenn man hingegen ein Array ohne Doublequotes printet, wird $, zwischen den Elementen eingefuegt, das ist per Default nichts.


---
//Modedit Gwendragon: vergessene Abschnittsüberschrift aus Perldoc eingefügt
---
GwenDragon
 2008-09-26 16:10
#114953 #114953
User since
2005-01-17
14746 Artikel
Admin1
[Homepage]
user image
pktm+2008-09-26 13:33:38--
Natürlich, ich hätte das, worum es mir ging (print) durch "Hilfe!!!" ersetzen können *g*
Findet man ja öfter...

Ja, woanders landet sowas gleich in der Tonne, wenn langjährige Forenmitglieder so albern sind und zu faul zum posten.

Sinnvolle Überschriften sind dazu da, damit auch andere (Helfende und weitere Fragende) wissen, worum es geht.
<< >> 8 Einträge, 1 Seite



View all threads created 2008-09-26 15:15.