Portál AbcLinuxu, 12. května 2025 09:11
Řešení dotazu:
Funguje to presne tak jak jste to napsal, mate ale chybu ve vypisu: misto $slovo1 pouzivate $1slovo atd. Jinou moznosti je pouzit pole misto skalaru a napsat neco takoveho:
@slovo = split(" ", $content);
print "Soubor obsahuje: $slovo[0], dale za nim $slovo[1], pak $slovo[2] a nakonec $slovo[3].\n";
Tak mám pravděpodobně chybu ve formátu, jelikož :
if ($arg =~ /!zobraz/i) {
my $url = 'http://www.i-netportal.cz/input.tx';
use LWP::Simple;
my $content = get $url;
die "Couldn't get $url" unless defined $content;
@slovo = split(" ", $content);
print "Soubor obsahuje: $slovo[0], dale za nim $slovo[1], pak $slovo[2] a nakonec $slovo[3].\n";
}
Nefunguje.. :(. Kde může být chyba?
Písmenko se ztratilo při CTRLC+C / V
Obsah souboru mi to vypíše v pořádku, ale jakmile vložím funkci split, aplikace ani nenaběhne, bez jakékoliv chyby. Možná je chyba už někde výše, ale kód je poměrně dlouhý...
Zvláštní, že bez toho bez problému.. :( Právě jsem si myslel, zda je funkce vložena na správném místě, jelikož to spadne při vložení v jakémkoliv formátu..
use strict;
use warnings;
use diagnostics;
jestli to něco nevypíše pak. Popřípadě kód zjednodušit tak, ať se chyba hledá lépe.
Nemate nahodou v tom souboru use strict? Zkuste misto @slovo = split ... napsat my @slovo = split ...;
Tak to je ono
Supeeeer, funguje
Bez problému to třídí slova dle obou verzí.
Děkuji moc za rady :)
Tak jsem zkoušel jednak zapnout podrobný výpis chyb, tam se až na pár drobností nic neprojeví.
Při zadání funkce split se aplikace vůbec nespustí, tudíž žádná chyba:(.
Zkoušel jsem i na hradit uvozovky lomítky, avšak také bez úspěchu...
Zkrátit jej asi nedokáži, teprve s tím experimentuji a asi bych jej nedokázal natolik očesat, abych chybu našel.. :(
Pokud by byl někdo ochoten pomoci úpravou, jistě bych mohl i já něčím přispět (FTP prostor, SQl databázi...)
Už si opravdu nevím rady :)
Je pravda, ze split ocekava jako prvni argment regexp, ale parametr " " je zvlastni pripad, ktery funguje jinak nez / /. Prectete si perldoc -f split:
As a special case, specifying a PATTERN of space (' ') will split on white space just as "split" with no arguments does. Thus, "split(' ')" can be used to emulate awk's default behavior, whereas "split(/ /)" will give you as many null initial fields as there are leading spaces.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.