O víkendu 11. a 12. května lze navštívit Maker Faire Prague, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.
Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.
Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).
Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.
Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.
Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.
Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.
Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.
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: