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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

Dotaz: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

7.10.2009 13:20 saky | skóre: 1
PERL goto :label - Ukončení, příp. jiné znovunačtení souborů
Přečteno: 186×

Dobrý den.

Mám v kódu na začátku načtení cca 15 txt souborů a chtěl bych na příkaz provést jejich obnovení, tedy reload (můžou se změnit za chodu).

Jsou to takovéto definice, přičemž každý soubor má trošku jiný formát:

 

open(DATA, 'url.txt') or die "nemuzu nacist soubor url.txt\n";
while($radek = <DATA>) {
if (substr($radek, 0, 1) ne '#') {
chomp($radek);
$link{$radek} = 'LINK';
}
}
close(DATA);
 
Chtěl bych, aby mi tedy tyto soubory nadefinované na začátku po příkazu znovu načetl. Zkoušel jsem použít goto :label, ale to provede celý kód až do konce, což je nežádoucí. Jde nějak označit ta část, která se má na příkaz provést? Případně jak jinak provést znovunačtení, aniž bych musel zopakovat všech 100 řádků v akci na příkaz? 
 
Díky za tipy :o)

 


Řešení dotazu:


Odpovědi

7.10.2009 14:44 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů
Co třeba dát načítání do podprogramu?
In Ada the typical infinite loop would normally be terminated by detonation.
7.10.2009 15:54 saky | skóre: 1
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

 To se mi právě nepodařílo. Pokud dám do : sub nacitani { .... } více než jeden soubor, nefunguje to.. Mimochodem, pokud se pak pomocí goto volá ten podprogram, proběhnou jen funkce uvnitř? To by vše vyřešilo, ale asi mám špatný formát...

7.10.2009 16:04 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů
nefunguje to
To znamená co? Ztmavne Vám obrazovka, začne na ní blikat velké červené ERROR a za chvíli to celé exploduje?
pokud se pak pomocí goto volá ten podprogram
Podprogram se nevolá pomocí goto ale normálně napsáním jeho jména.
In Ada the typical infinite loop would normally be terminated by detonation.
7.10.2009 17:02 saky | skóre: 1
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

 :o).

Pouze problikne, takže ani nezjistím chybu... Při vložení 1 souboru viz příklad to běží normálně, ale jestliže do podprogramu vložím 2 a více, ihned spadne.. Ještě jednou juknu, co by mohlo být špatně:-) Díííky

7.10.2009 17:07 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů
Pouze problikne
Tak na to neklikejte a pusťte to z terminálu, ať vidíte výstup.
Při vložení 1 souboru viz příklad to běží normálně, ale jestliže do podprogramu vložím 2 a více, ihned spadne
Existuje asi půl miliónu možností, jak "vložit 2 a více", pokud chcete s něčím poradit, tak se snažte problém popsat co nejpřesněji.
In Ada the typical infinite loop would normally be terminated by detonation.
7.10.2009 17:18 saky | skóre: 1
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

 Ok, takže 

sub nacitani {

 

open(DATA, 'udrzovac.txt') or die "nemuzu nacist soubor udrzovac.txt\n";

while($radek = <DATA>) {

if (substr($radek, 0, 1) ne '#') {

$udr[$a] = $radek;

$a++;

}

}

close(DATA);

#print "nacitam soubor refresh.txt...\n";

my @hlaseni = ();

$a = 0;

$radek = '';  

 

open(DATA, 'refresh.txt') or die "nemuzu nacist soubor refresh.txt\n";

while($radek = <DATA>) {

if (substr($radek, 0, 1) ne '#') {

$hlaseni[$a] = $radek;

$a++;

}

}

close(DATA);

 

}

 

 

 Nefunguje. Takto za sebou je provedeno načtení souborů, tak jsem myslel, že bych to pouze "obalil" do sub nacitani { .....}. Asi špatný předpoklad :-)

Řešení 1× (saky (tazatel))
8.10.2009 07:15 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů
No, stále jste nenaznačil, proč to nefunguje (tj. očekávaný verzus skutečný výsledek), ale Váš problém je v tom, že máte my @hlaseni, což definuje lexikální proměnnou, která zanikne po návratu z funkce. Pokud ten řádek odstraníte, budete používat globální proměnnou, a bude to "fungovat".

Každopádně si ale zkuste do hlavy zadrátovat, že pokud děláte copy-paste kódu, tak je něco špatně. Proč nepoužijete podprogram, kterému dáte jméno souboru a vrátí Vám obsah? Např.
sub nacti_jeden {
    my $file = shift;
    open(DATA, $file) or die "nemuzu nacist soubor $file\n";

    my $a, @ret;

    while(my $radek = <DATA>) {
        if (substr($radek, 0, 1) ne '#') {
            $ret[$a] = $radek;
            $a++;
        }
    }
    close(DATA);
    return @ret;
}

sub nacteni {
    @pole1 = nacti_jeden("1.txt");
    @pole2 = nacti_jeden("2.txt");
}

Případně, pokud to chcete napsat opravdu v Perlu, tak
sub nacti_jeden {
    my $file = shift;
    open(my $data, $file) or die "nemuzu nacist soubor $file\n";

    return grep { not /^#/ } (<$data>);
}
In Ada the typical infinite loop would normally be terminated by detonation.
Řešení 1× (saky (tazatel))
8.10.2009 09:31 NeoV | skóre: 23
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

Och... hroooza :-) Ale k veci - pisete, ze Vam to nefunguje - nacita len 1 subor. Je to preto lebo vobec nerozumiete tomu co robite:

- na zaciatku (nacitavanie prveho suboru) pracujete s globalnou premennou @udr

- pred dalsim nacitavanim uz ale definujete lokalnu premennu @hlaseni - ta nie je inkde pouzita ako navratova hodnota a po ukonceni funkcie (podprogramu) je zahodena

- PS: pridavanie do pola cez odpomatavanie si indexu je riadne zvratene :-) gugl -> push/pop & unshift/shift (pre Vas je potrebny push) :-)

 

Resp. pre Vas je potrebne pouzit funkciu ktoru Vam napisal "pht" - najlepsie tu druhu s regularnym vyrazom - je len potrebne si hlavne dostudovat co su lokalne premenne, co globalne, naco su dobre navratove hodnoty vo funkciach.

 

  

 

8.10.2009 12:58 saky | skóre: 1
Rozbalit Rozbalit vše Re: PERL goto :label - Ukončení, příp. jiné znovunačtení souborů

 Díky všem. Vyřešeno :-)

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.