Perl (7) - Funkce III
V tomto díle si doplníme zbývající informace o funkcích a jestě další skutečnosti o práci se
skalárními daty.
25.11.2004 13:00 |
Josef "jose" Kadlec
| Články autora
| přečteno 12194×
Začneme takovým, v minulých dílech slibovaným, referenčním přehledem základních funkcí, které využijeme při práci se skalárními
daty. Nejprve funkce pro práci s čísly:
abs()
Vrací absolutní hodnotu argumentu (nebo proměnné $_ ).
atan2()
Vrací arkustangens v intervalu od Pí do Pí.
sin()
Vrací sinus hodnoty argumentu vyjádřený v radiánech.
cos()
Funkce, která vrací kosinus argumentu v radiánech.
exp()
Vrací základ přirozených algoritmů (logaritmus o základu e), který je umocněný na určité číslo.
hex()
Jako argument přijme číslo v hexadecimálním tvaru (tzn. v šestnáctkové číselné soustavě) a vrací
číslo v soustavě desítkové.
int()
Tato funkce vrací z čísla část, která je integer - vlastně to znamená, že se z čísla odtrhne
desetinná část (i když lze zadat např. zlomek).
$var = 57/7; # v promenne $var je hodnota 8.14285714285714
$var = int 57/7; # v promenne $var je hodnota 8
log()
Vrací logaritmus o základu e argumentu.
oct()
Jako argument přijme číslo v oktalovém tvaru a vrátí číslo ve desítkovém tvaru.
rand()
Vrátí pseudo-náhodné číslo mezi 0 a hodnotou argumentu. Pokud argument není funkci zadán, tak je
pseudo-náhodné číslo vybráno z intervalu od 0 (včetně) do 1 (ne včetně).
srand()
Nastaví "náhodnou hodnotu" pro generování pseudo-náhodných čísel funkcí rand() -
stručně řečeno aktivuje náhodnost pro funkci rand() , která by jinak generovala pořád ta
samá čísla. Pokud není zadán argument, použije se jako argument funkce time().
sqrt()
Vrací odmocninu z argumentu - argument by neměl být záporný.
A nyní přikročíme k funkcím, které využijeme při práci s textovými řetězci.
chop()
Funkce odřízne ze zadaného řetězce znak konce řádku a vrátí řetězec bez těchto znaků.
chomp()
Odřízne znak nového řádku pouze z konce tohoto řetězce.
chr()
Vrací znak vyjádřený určitým číslem v tabulce ASCII.
crypt()
Zašifruje řetězec podle unixové funkce crypt() (man 3 crypt ). Jako první
argument se zadává řetězec k zašifrování a jako druhý parametr sůl, podle které se řetězec
zašifruje.
lc()
Převede všechna velká písmena na malá ze zadaného řetězce.
uc()
Převede všechna malá písmena na velká ze zadaného řetězce.
lcfirst()
Vrací řetězec, kde je zmenšený pouze první znak.
ucfirst
Vrací řetězec, kde je zvětšený pouze první znak.
lenght()
Vrátí délku řetězce v bajtech.
ord()
Funkce vrátí číselnou hodnotu podle ASCII tabulky prvního znaku v zadaném řetězci.
substr()
Vrací jakýsi podřetězec ze zadaného řetězce jakožto prvního argumentu (pozn. podřetězec se může rovnat řetězci asi jako
podprostory v algebře). Druhý argument je offset, na jakém znaku řetězce bude podřetězec začínat.
Pokud je offset záporný, počítáme začínající znak od konce řetězce. A posledním argumentem je délka
podřetězce. Pokud tento argument chybí, tak podřetězec bude obsahovat znaky od offsetu do konce
řetězce.
print substr(JosefKadlec, 0, 5); # vypíše řetězec "Josef"
print substr(JosefKadlec, -6, 6); # vypíše řetězec "Kadlec"
print substr(JosefKadlec, -6); # vypíše řetězec "Kadlec"
printf()
Vypíše zformátovaný řetězec do tzv. filehandelu (STDOUT, STDIN, apod.). Pokud tento parametr není
zadán, tak se řetězec implicitně vypíše na STDOUT. Používá se spíše ve speciálních případech (většinou pro formátování čísel), ale zase ji nelze použít všude a v těchto případech je potřeba sáhnout po funkci print() (kterou ani v tomto referenčním přehledu neuvádím). Takže pokud budeme chtít např. vytisknout na stadnardní výstup proměnnou $var zaokrouhlenou (opravdu zaokrouhlenou - tzn. že nejsou pouze odříznutá příslušná desetinná místa) hodnotu na 3 desetinná místa, tak bychom to provedli takto:
printf("%.3f", $var);
Pokud bychom například chtěli úplně odříznout z proměnné $var desetinnou část, vypadalo by to takto:
printf("%d", $var);
Obecný zápis formátu, který funkce printf() (stejně tak sprintf() ) přijímá, vypadá takto %x.yz, kde x a y jsou nepovinné parametry. Parametr x udává počet znaků, které by hodnota proměnné ve výsledném řetězci měla obsahovat. Parametr y pak udává počet desetinných míst. Nakonec parametr udává typ hodnoty - výčet možných hodnot představuje následující seznam.
c - znak
d - celé číslo v desitkové soustavě
e - exponenciální formát desetinných čísel
f - klasický (pevný) formát desetinných čísel
g - kompaktní formát desetinných čísel
ld - dlouhé celé číslo v desítkové soustavě
lo - dlouhé celé číslo v osmičkové soustavě
lx - dlouhé celé číslo v šestnáctkové soustavě
lu - kladné dlouhé celé číslo v desítkové soustavě
o - šestnáctkové celé číslo
s - řetězec
u - kladné číslo v desítkové soustavě
x - celé číslo v šestnáctkové soustavě
X - celé číslo v šestnáctkové soustavě s velkými písmeny
Jsou to vlastně formátovací kódy převzaté z jazyka C. Pokud byste potřebovali některé další informace o těchto kódech, najdete je v manuálové stránce perfunc (man perlfunc ).
Samozřejmě lze s jedním voláním funkce printf() tisknout i více proměnných - ukáži na příkladě:
printf("Prvni hodnota: %d a druha hodnota: %d", $var1, $var2);
sprintf()
Funkce vrací formátovaný řetězec podle konvence funkce printf() , takže se hodí spíše pro vkládání zformátovaných proměnných do jiných výrazů.
V závěru si doplníme nějaké informace k operátorům. Nezmínili jsme totiž ještě velmi důležité logické
(nebo také booleanovské) operátory, které své operandy vyhodnocují podle logických pravidel. Tyto
operátory známe prakticky tři a to AND, OR a NOT a jejich znakové ekvivalenty && pro AND, || pro OR
a ! pro NOT. Platí tedy, že:
x AND y vrací hodnotu TRUE v případě, že obě hodnoty jsou vyhodnoceny jako TRUE.
x OR y vrací hodnotu TRUE v případě, že alespoň jedna hodnota je vyhodnocena jako
TRUE.
NOT x vrací TRUE jen v případě, že hodnota x je vyhodnocena jako FALSE a naopak.
<\p>
Dále existují tzv. bitové operátory <<, >>, &, | a logická bitová funkce XOR (xor a ^), které se
však obecně příliš nepoužívají. Bližší informace o nich naleznete v manuálové stránce perlop -
man perlop .
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|