Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6732[/thread]

Letzte Zeile in einem Array finden



<< |< 1 2 >| >> 13 Einträge, 2 Seiten
esskar
 2005-02-23 04:36
#51968 #51968
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
sub DoBeforeAfter
{
my (@FILE) = @_;
my $retval = "";
for my $i (0 .. $#FILE) {
$retval .= $CONFIG{'before'}.$FILE[$i];
$retval .= $CONFIG{'after'} if $i != $#FILE;
}
chomp( $retval );
return $retval;
}
Taulmarill
 2005-02-23 11:19
#51969 #51969
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
also, in $i stehen nicht die einzelnen felder des arrays drin. da wird nur von 0 bis zum letzten element des arrays gezählt. $#FILE gibt einen integer (eine ganze zahl) zurück, die beschreibt, an welcher stelle im array sein letztes element ist. das sollte dann auch deine dritte frage beantworten.
zu deiner dritten frage. for und foreach sind genau das selbe. es gibt in perl keinen unterschied zwischen diesen beiden strukturen. for is einfach nur vier zeichen kürzer.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
pq
 2005-02-23 12:36
#51970 #51970
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
wieso schreiben in letzter zeit so viele ins CGI-forum? das hier gehört
ins forum "Allgemeines zu Perl". *verschieb*
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
cbxk1xg
 2005-02-23 03:54
#51971 #51971
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo Freunde der Sonne,

ich würde gerne einen Bug in meinem CMS beheben. Der User hat die Möglichkeit zu bestimmen was vor und hinter jede Zeile geschrieben wird. Also zum Beispiel ein BR oder ein P.

Dummerweise wird auch immer die letzte Zeile mit einbezogen. Das ist natürlich Quark. Denn da wo der Text zuende ist, braucht man kein BR mehr.

Wie finde ich nun raus wann es sich beim Durchgang der Schleife um die letzte Zeile handelt?

Code (perl): (dl )
1
2
3
4
5
6
7
8
sub DoBeforeAfter
{
my (@FILE) = @_;
my (&#36retval);
foreach &#36line (@FILE) { &#36retval .= "&#36CONFIG{'before'}&#36line&#36CONFIG{'after'}"; }
chomp( &#36retval );
return &#36retval;
}
\n\n

<!--EDIT|cbxk1xg|1109124059-->
cbxk1xg
 2005-02-23 05:36
#51972 #51972
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Wenn ich das richtig verstehe dann bezeichnet $#FILE also das Ende, bzw. die Letzte Zeile, oder? Ist die erste Zeile dann 0#FILE ?

Aber warum schreibst Du
Code: (dl )
$retval .= $CONFIG{'before'}.$FILE[$i];


und nicht
Code: (dl )
$retval .= $CONFIG{'before'}.$i;

???

Und die dritte und letzte Frage: Warum nimmst Du FOR und nicht FOREACH? Ist das schneller, oder einfach nur eleganter?
pq
 2005-02-23 12:28
#51973 #51973
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
cbxk1xg: der originalcode ist so schon okay (bis auf dass strict fehlt, natürlich).
füge einfach noch ein
local $/ = $CONFIG{after}; vor dem chomp ein.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Taulmarill
 2005-02-23 14:23
#51974 #51974
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
hm, irgendwie kommt es mir komisch vor, dass $retval nach der for schleife gechompt wird. chomp entfernt imho nur zeilenumbrüche die am ende des strings stehen. ist das so gewollt?

btw. könnte man das nicht folgendermassen abkürzen?
Code: (dl )
my $retval = $CONFIG{'before'} . join( "$CONFIG{'after'}$CONFIG{'before'}", @_ );
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
cbxk1xg
 2005-02-23 16:34
#51975 #51975
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
[quote=pq,23.02.2005, 11:28]der originalcode ist so schon okay (bis auf dass strict fehlt, natürlich).
füge einfach noch ein
local $/ = $CONFIG{after}; vor dem chomp ein.[/quote]
Wozu ist das gut?\n\n

<!--EDIT|cbxk1xg|1109169380-->
pq
 2005-02-23 16:40
#51976 #51976
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
na das kannst du in perldoc perlvar nachlesen.
kurz: chomp entfernt $/ von dem ende seines arguments.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
cbxk1xg
 2005-02-23 16:50
#51977 #51977
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Mir gehts nicht um das chomp, sondern um local $/.
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2005-02-23 04:36.