abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 03:11 | Komunita

    Do 20. února lze hlasovat pro wallpapery pro Ubuntu 26.04 s kódovým názvem Resolute Raccoon.

    Ladislav Hagara | Komentářů: 0
    dnes 02:22 | Nová verze

    Byla vydána lednová aktualizace aneb nová verze 1.109 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.109 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    včera 19:33 | Zajímavý projekt

    Na Kickstarteru běží kampaň na podporu modulárního otevřeného handheldu Mecha Comet s Linuxem.

    Ladislav Hagara | Komentářů: 1
    včera 14:00 | Humor

    V nedávno zveřejněné kolekci dokumentů souvisejících s kontroverzním finančníkem a kuplířem Jeffrey Epsteinem se překvapivě objevil i referenční manuál unixového shellu Bash, jedná se o verzi manuálu z roku 2005. Aktuální vydání si lze stáhnout ze stránek GNU.

    NUKE GAZA! 🎆 | Komentářů: 12
    včera 13:55 | Nová verze

    The Document Foundation oznámila vydání nové verze 26.2 svobodného kancelářského balíku LibreOffice. Podrobný přehled nových vlastností i s náhledy v poznámkách k vydání (cs). Vypíchnout lze podporu formátu Markdown.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | Pozvánky

    Co se děje ve zprávách, ví asi každý - válka sem, clo tam, demonstrace na jednu i druhou stranu a bastlíř už má pocit, že se snad ani nic jiného neděje. To by však byl velký omyl a Virtuální Bastlírna je zde jako každý měsíc, aby vytáhla na světlo světa události ze světa vědy a techniky. Připojte se tedy nezávaznému povídání Strahovského MacGyvera! Co se tam bude probírat? PCBWay začalo dělat průhledné plošňáky, MARS končí s výrobou skříněk, FEL

    … více »
    bkralik | Komentářů: 0
    včera 12:11 | IT novinky

    Guvernérka státu New York Kathy Hochul (Demokraté) plánuje novou legislativu, která by měla omezit výrobu 3D tištěných zbraní. Tento návrh zákona zavádí povinnost pro všechny 3D tiskárny prodávané ve státě New York obsahovat 'software' bránící ve výrobě zbraní. Návrh zákona rovněž zakazuje lidem sdílet 'digitální plány zbraní' (blueprinty) bez povolení. Existují důvodné obavy, že se tento nešťastný nápad může šířit do dalších zemí a ovlivnit celý 3D tisk jako takový. Ostatně, s podobnou regulací nedávno přišel i stát Washington.

    NUKE GAZA! 🎆 | Komentářů: 18
    včera 05:11 | Komunita

    Na čem pracují vývojáři webového prohlížeče Ladybird (GitHub)? Byl publikován přehled vývoje za prosinec 2025 a leden 2026 (YouTube). Zajímavé, že i v roce 2026 celou řadu problémů vyřeší falšování řetězce User-Agent.

    Ladislav Hagara | Komentářů: 2
    3.2. 20:11 | Komunita

    Bylo rozhodnuto, že Linux From Scratch (LFS) končí s podporou System V init. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů už budou pouze se systemd.

    Ladislav Hagara | Komentářů: 8
    3.2. 17:00 | Nová verze

    Byla vydána nová verze 2026.1.0 "Like a Version" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. Změněno bylo číslování verzí. Předchozí verze byla 2.9.1.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (18%)
     (6%)
     (0%)
     (10%)
     (25%)
     (3%)
     (5%)
     (2%)
     (12%)
     (30%)
    Celkem 756 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    Rozcestník

    Dotaz: Nelogicke chovani v perlu

    27.11.2009 23:48 Mr.S1lent.cz
    Nelogicke chovani v perlu
    Přečteno: 245×
    Zdravim, mam tu jeden zahadny problem, nad kterym dumam uz asi cely den...

    Zde je cast DB modulu: http://www.pastebin.cz/27127 a zde priklad volani metody _view: http://www.pastebin.cz/27128

    a ted problem - do terminalu mi to vypise hodnotu pouze u test1, avsak test2 - 4 zustavaji empty, vypisy z Dumperu jsou konstantni, vedel by nekdo, kde muze byt chyba? Me absolutne nic nenapada, nechapu, jak se to takhle vubec muze chovat....

    Řešení dotazu:


    Odpovědi

    28.11.2009 00:54 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    Problém je IMHO v tom whilu. Ten první while to projede nakonec a ty další už vrací false v první iteraci. Potřeboval bys vyresetovat ten prstíček, co ukazuje na aktuální řádek.
    28.11.2009 00:57 buff | skóre: 10 | blog: buff
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    Snad seek? Hope it helps. Zkus, mně se to zkoušet nechce ;-)
    28.11.2009 07:32 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    Doporučuju ty věci dávát dohromady s dotazem a ne na pastebin. Za 2 roky až někdo na tohle náhodou narazí, tak už nepochopí co se řešilo.

    Takže:
    sub new {
        my ( $pkg, $db ) = @_;
        my $self = bless {}, $pkg;
        $self->{_db} = "db/$db.db";
        open( $self->{_dbhandler}, $self->{_db} ) or die "DB $db.db not open\n";
        return $self;
    }
    sub _view {
        my ( $self, $arg ) = @_;
        my $dbhandler = $self->{_dbhandler};
        while ( my $line = <$dbhandler> ) {
            if ( $line =~ /( *)$arg( *)\=( *)'(.*?)';( *)/ ) {
                return $4;
            }
        }
        return undef;
    }
    $self->{_db} = new TAI::DB( 'status' );
    print Dumper( $self->{_db} );
    print "test1: " . $self->{_db}->_view( 'task' ) . "\n";
    print Dumper( $self->{_db} );
    print "test2: " . $self->{_db}->_view( 'task' ) . "\n";
    print Dumper( $self->{_db} );
    print "test3: " . $self->{_db}->_view( 'task' ) . "\n";
    print "test4: " . $self->{_db}->_view( 'task' ) . "\n";
    No a k tomu dotazu, myslím si to co ostatní: soubor projíždíte po řádkách, takže nebude vracet v každém volání totéž. Dá se to řešit různě, ale myslím, že děláte tu celou věc trochu přes ruku, co přesně má být účelem toho kódu?
    In Ada the typical infinite loop would normally be terminated by detonation.
    28.11.2009 17:14 Mr.S1lent.cz
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    Ucelem toho kodu - modulu - je vytvorit takovy obsluhovac souborů, ktere mi slouzi jako text/plan uloziste - datazabaze pouzivam jen tehdy, pokud je to nevyhnutelne nutne, tudiz to resim takhle. Podle vasich reakci usuzuju, ze si ten filehandler "pamatujue", kde naposledy skoncil a pote projizdeni souboru po radku pokracuje prave od toho mista, je to tak? :-) Jinak uz jdu na study toho seek, moc dekuji, verim, ze mi to pomuze vyresit problem :-))
    28.11.2009 17:30 Mr.S1lent.cz
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    Tak, problem je vyresen, seek mi opravdu pomohl :-) Moc dekuji - tady neslo o to, ze bych nevedel, kde hledat, ale ja nevedel, co hledat, jeste jednou diky :-))
    28.11.2009 18:03 Nick
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    No vidíš. A příště nenadávej na Perl a hledej nejdřív problém mezi klávesnicí a židlí :-)
    29.11.2009 20:13 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Nelogicke chovani v perlu
    No, možností jak tohle udělat je hodně a upřímně seek je jeden z těch méně šťastných.

    Nejjednodušší je dát open/close do rutiny _view, čili pokaždé soubor otevřít, najít řádek a potom ho zavřít. Je to stejně efektivní jako seek, ale čistější a robustnější vůči přepisu/smazání souboru.

    Další možnost je v konstruktoru soubor kompletně přečíst a uložit si páry klíč=hodnota (pokud chápu dobře, tak ten soubor má takovou strukturu) do hashe a ve _view pouze vracet hodnoty z hashe. Případně dodělat něco jako reload, kterej to načte na požádání znova. Tento přístup je nesporně efektivnější co se týče počtu čtení souboru.

    Třetí možnost je se porozhlédnout po CPANu, co například Config::Tiny a další?

    Jinak, databáze není nevyhnutelně špatná věc.

    Ještě pár postřehů k tomu kódu:
    if ( $line =~ /( *)$arg( *)\=( *)'(.*?)';( *)/ ) {
                return $4;
            }
    
    je lépe zapsat jako
    if ( $line =~ /\A\s*\Q$arg\E\s*\=\s*'(.*?)';\s*\Z/ ) {
                return $1;
            }
    
    (použití \s pro prázdné znaky, \A ... \Z pro ohraničení a \Q ... \E pro quotování proměnné. BTW regexp pro načtení celého souboru by mohl vypadat asi takto nějak
    my %config;
    open (my $soubor, '<', 'soubor.txt');
    {
        unset $/;
        %config = (<$soubor> =~ /^\s*(\Q$arg\E)\s*\=\s*'(.*?)';\s*?/xmsg);
    }
    
    Místo return undef; je kratší (a správnější) použít jen return;.

    Místo open...or die je modernější metoda use autodie.
    In Ada the typical infinite loop would normally be terminated by detonation.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.