Byla vydána nová verze 4.8.0 interaktivního shellu fish (friendly interactive shell, Wikipedie). Přehled novinek v poznámkách k vydání.
Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem se nově stal čínský LineShine v Národním superpočítačovém centru v Šen-čenu (NSCS) s výkonem 2,198 exaFLOPS. Z prvního místa sesadil americký superpočítač El Capitan s výkonem 1,809 exaFLOPS. Nejvýkonnější český počítač C24 klesl na 215 místo. Karolina, GPU partition klesla na 249. místo a Karolina, CPU partition na 475. místo.
… více »Zemřel průkopník videoherní hudby Bobby Prince (Wikipedie). Složil hudbu pro hry Wolfenstein 3D, Doom, Doom II, Duke Nukem II a Duke Nukem 3D.
Počítačová hra Operace Flashpoint (Arma: Cold War Assault) od společnosti Bohemia Interactive slaví 25 let. Při této příležitosti bylo publikováno bezplatné hratelné Arma: Cold War Assault Remastered Demo a na GitHubu byly zveřejněny zdrojové kódy.
Na trh v České republice přichází HP EliteBoard G1a. Jde o plnohodnotný AI počítač integrovaný přímo do těla klávesnice, tedy zařízení, které na první pohled vypadá jako minimalistická klávesnice, ale ve skutečnosti nahrazuje klasickou počítačovou jednotku.
V lednu bylo oznámeno, že desktopové prostředí Xfce bude mít vlastní kompozitor pro Wayland s názvem xfwl4. O víkendu byla vydána první preview verze.
Minulý týden byl oficiálně vydán Android 17. Detaily na blogu a stránkách věnovaných vývojářům.
Dnes jde do prodeje zařízení Steam Machine. Steam Machine 512 GB za 1 039 EUR a Steam Machine 2 TB za 1 359 EUR. Do čtvrtka 25. června do 19:00 se lze zapsat na seznamy. Ty budou jednorázově náhodně slosovány, čímž bude určeno pořadí rezervací a čekacích listin.
Vývojáři OpenMW (Wikipedie) oznámili vydání verze 0.51.0 této svobodné implementace enginu pro hru The Elder Scrolls III: Morrowind. Přehled novinek v oznámení o vydání a také na YouTube a PeerTube.
Byla vydána nová verze 2026.3.0 "Carousels & Killer Whales" 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.
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:
Řešení dotazu:
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...
nefunguje toTo 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 podprogramPodprogram se nevolá pomocí goto ale normálně napsáním jeho jména.
: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
Pouze problikneTak 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 spadneExistuje 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.
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 
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>);
}
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.
Díky všem. Vyřešeno 
Tiskni
Sdílej: