> ...... > Nevedel by prosim vas nekdo jak a jesli vubec by se to dalo zjednodusit? > Vsiml jsem si, ze je tady par programatorskych guru. :-) > Diky za pripadnou pomoc, Marek K. Nevim, jestli jsem guru, ale mne se to zase az tak moc "divoke" nezda - je to, pravda, hrozne skolacke a je to proste klasicky Perl beginner's code a docela jasne z toho kouka skodliva ;-)) pascalsko-basicka vychova. Ale konec koncu, i takhle se da v Perlu "programovat", pokud clovek zna jenom ty nejzakladnejsi a vicemene vsude universalni konstrukce. Bud tedy rad, zes to dal dohromady aspon takhle a ze to plni svuj ucel. :-) Ale chces-li to "trochu" zjednodusit, tak tech 17 radku tveho "programu" lze v Perlu jednoduse smrsknout na radek JEDINY a to dokonce vice zpusoby (jak tomu v Perlu byva zvykem): s pouzitim ? foreach $line(@pole){print(VYSTUP $line=~/#B#/..$line=~/#E#/?$line:'');} s modifikatorem foreach $line(@pole){print(VYSTUP $line) if $line=~/#B#/..$line=~/#E#/;} klasicky foreach $line(@pole){if($line=~/#B#/..$line=~/#E#/){print(VYSTUP $line;}} Ten radek resi cely tvuj "program" na vypis vybranych radku z pole. Kouzlo je v tom, ze proste pouzijes range operator '..'. Ten ma ve skalarnim kontextu bistabilni chovani a pamatuje si svoji posledni hodnotu. Zacne na false, ciha na levy operand a je-li true, prepne se IHNED do true a dale ciha zase na pravy operand. Bude-li true, prepne se PO teto operaci do false, atd... Take to tvoje pouzivani index() je zde zcela zbytecne. Pozice flagu v radku te nezajima, takze ti na to staci uplne primitivni regex. Jojo, Perl je napul programovaci jazyk a napul magie... :-))) Daniel. ____________________________________________________________ NOKIA 3100 jiľ od 2977 Kč. Dost dobrý důvod poslat svůj starý telefon do háje! www.oskar.cz http://ad2.seznam.cz/redir.cgi?instance=64995%26url=http://www.oskarmobil.cz/handsets/index.php
This archive was generated by hypermail 2.1.3 : 06. 12. 2003, 22:36 CET