#!/usr/local/bin/perl ################################### ### created by JK on 2007-11-23 ### ################################### # vycistime obrazovku system("clear"); # zjistime si vychozi cas a pak bezny cas $oldTime = time; $time = time; # soubor, se kterym budeme pracovat, nacteme z argumentu prikazove radky $file = $ARGV[0]; # hledany vyraz v souboru take nacteme z prikazove radky $searchWord = $ARGV[1]; # seznam vyskytnutych slov @listOfResults; # pocet vyskutu slova $countOfSolution = 0; # otevreme si soubor open(STREAM, $file); # a po radkach ho projdeme for($currentRow = 1; $line = ; ++$currentRow) { # jestlize je na dane radce nas hledany vyraz (slovo ohraniceno bilimi znaky) if ($line =~ /\s$searchWord\s/) { # zjistime za jak dlouho byl nalezen &GetResultTime; # a vse zapiseme do vysledku $result = "Slovo \"$searchWord\" se nachazi na $currentRow. radku v $file [$time sekund].\n"; # vysledek vytiskneme na konzoli print $result; # a ulozime do pole vysledku push(@listOfResults, $result); # inkrementujeme pocet vyskytu ++$countOfSolution; } } # zavreme soubor close(STREAM); # po skonceni prohledavani souboru si opet zjistime cas &GetResultTime; # a vypisme na obrazovku vyslednou sumarizaci print " +++++++++++++++++++++++++ +++ VYSLEDEK HLEDANI: +++ +++++++++++++++++++++++++ Soubor $file byl prohledan za: $time sekund. Slovo \"$searchWord\" bylo nalezeno $countOfSolution x.\n "; # pokud se hledany vyraz nasel alespon jedenkrat if($countOfSolution != 0) { # zobrazime dotaz na uzivatele print "Prejete si vysledek hledani zapsat do souboru? [ano / ne] "; # a jestli chce zapsat vysledek do souboru if( =~ "ano") { # pozadame uzivatele o nazev souboru, kam se ma vysledek ulozit print "Zadejte prosim nazev souboru: "; # zapamatujeme si nazev souboru $storage = ; # a pokud neni nazev prazdny retezec if($storage !~ "") { # otevreme soubor pro zapis ... dojde k prepisu, pokud soubor jiz existuje bez varovani open(SAVE, ">$storage"); # pro vsechny vysledky v seznamu vysledku foreach $data (@listOfResults) { # zapiseme vysledek do souboru print SAVE $data; } # a jeste tam zapiseme vyslednou sumarizaci print SAVE " +++++++++++++++++++++++++ +++ VYSLEDEK HLEDANI: +++ +++++++++++++++++++++++++ Soubor $file byl prohledan za: $time sekund. Slovo \"$searchWord\" bylo nalezeno $countOfSolution x.\n "; # zavreme soubor pro zapis close(SAVE); # a dame uzivateli vedet, ze se vse povedlo zapsat print "Vysledek byl ulozen do souboru: $storage\n\n\tSee you ...\n\n\n"; } # jinak else { # oznamime spatnou uzivatelovu volbu print "Zadali jste neplatny nazev souboru ...\n\n\tSee you ...\n\n\n"; } } #jinak else { # vypisme pozdrav a koncime print "\n\tSee you ...\n\n\n"; } } # jinak else { # vypiseme nezdar hledani print "Hledane slovo \"$searchWord\" se v souboru $file vubec nenachazi :( \n"; } # procedura GetResultTime - zjisti za jak dlouho od behu programu se nasel vysledek sub GetResultTime { # rozdil minuleho a soucasneho systemoveho casu nam da dobu potrebnou k nalezeni hledaneho vyrazu $resultTime = time - $oldTime; # cas reprezentovany cislem si prevedeme na vteriny ($sec) = localtime($resultTime); # a vteriny si ulozime do nasi globalni promenne $time $time = $sec; }