perl: foreach() a dalsi polozka
Petr Baudis
pasky na pasky.ji.cz
Úterý Srpen 14 21:46:52 CEST 2001
> (V @file je spousta radku textu.)
>
> foreach (@file)
> {
> if(nejakapodminka)
> {
> DelejNeco1($_);
> # >>>>> Vezmi dalsi polozku
> DelejNeco2($_);
> }
> else
> {
> DelejNecoJineho($_);
> }
> }
>
> Takze pokud plati 'nejakapodminka' tak potrebuju na aktualni radek
> postvat funkci DelejNeco1() a na hned dalsi radek funkci DelejNeco2().
> Pokud podminka neplati (coz je vetsina pripadu), tak to s kazdym radke
> udela DelejNecoJineho().
>
> Na miste oznacenem '>>>>>' potrebuju z @file dostat dalsi radek do $_
> (nebo do jine promenne). Uz nad tim badam celkem dlouho a neprisel jsem na
> to jak to udelat :-(((
Ja bych si na to udelal proste kontrolni promnenou:
$Neco2 = 0;
foreach (@file) {
if ($Neco2) {
DelejNeco2($_);
$Neco2 = 0;
}
if (podminka) {
DelejNeco($_);
$Neco2 = 0;
} else {
DelejNecoJineho($_);
}
}
ci pokud to chcete univerzalnejsi, efektnivnejsi, hnusnejsi a vice 31337:
$action = "DelejNecoJineho($ln);";
foreach $ln (@file) {
if (podminka) {
DelejNeco($ln);
$action = "DelejNeco2($ln);";
} else {
eval($action);
$action = "DelejNecoJineho($ln);";
}
}
nejsem si ted jisty jestli se $_ pri eval() nemeni nejak, proto pouzivam $ln,
ale nemelo by se.
--
Petr "Pasky" Baudis
. .
#define BITCOUNT(x) (((BX_(x)+(BX_(x)>>4)) & 0x0F0F0F0F) % 255)
#define BX_(x) ((x) - (((x)>>1)&0x77777777) \
- (((x)>>2)&0x33333333) \
- (((x)>>3)&0x11111111))
-- really weird C code to count the number of bits in a word
. .
My public PGP key is on: http://pasky.ji.cz/~pasky/pubkey.txt
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d- s++:++ a--- C+++ UL++++$ P+ L+++ E--- W+ N !o K- w-- !O M-
!V PS+ !PE Y+ PGP+>++ t+ 5 X(+) R++ tv- b+ DI(+) D+ G e-> h! r% y?
------END GEEK CODE BLOCK------
Další informace o konferenci Linux