![]() |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
|
Typ identifikátoru | Způsob zápisu dle zvyku | Příklad |
---|---|---|
Proměnné, podprogramy | malými písmeny | $promenna, &podprogram() |
Balíky | První písmeno slova velké, ostatní malá | MojeTrida |
Návěští, konstanty, zdroje dat | velkými písmeny | NAVESTI:, KONSTANTA, <STDIN> |
V jednom programu se nemůže vyskytovat více než jedna proměnná stejného názvu a stejného typu ve smyslu datového skalár, pole, hash atd. To je logické, neboť bychom je nemohli rozlišit. Později zjistíme, že existuje něco jako rozsah platnosti proměnné, což nám pojem "stejný název proměnné" představí ještě v trochu jiném světle. Není totiž vůbec tak zřejmé, kdy proměnná je a kdy není dostupná. Tomuto se ale budeme věnovat později.
Do proměnné můžeme přiřazovat řetězce, čísla (ať už celá nebo desetinná), seznamy hodnot, ovladače nebo odkazy. Během provádění programu se může proměnná mezi číslem a řetězcem automaticky konvertovat. Perl je v tomto směru velmi benevolentní. Pokud na začátku programu použijeme proměnnou jako číslo, může být v jeho průběhu měněna na řetězec a obráceně. Dokonce nemusíme měnit její obsah. Jakýkoliv řetězec si Perl sám převede na číslo a naopak. V dalším dílu uvedeme pravidla, kterými se tato konverze řídí.
Délka informace uvnitř proměnné je omezena jen velikostí paměti.
Co je to přiřazení již víme. Uveďme si ještě několik příkladů:
$promenna = "normální řetězec";
#řetězec je uprostřed 2× zlomen. Do proměnné se uloží i escape znaky.
$promenna = "řetězec\nna 3\nřádcích";
#$promenna obsahuje číslo
$rok = 2005;
#desetinné číslo
$e = 2.71828;
#nespravné názvy proměnných. Interpret hlásí chybu.
$x&y = 2005;
$44 = 2006;
Operátor = není jediným přiřazovacím příkazem. Další poznáme v příštím dílu.
Všechny hodnoty v uvozovkách jsou Perlem brány jako řetězec. Mimo uvozovek lze použít i apostrofy. Existují ještě jiné způsoby zápisu, ale těmi se nyní nemá smysl zatěžovat. Apostrofy se liší od uvozovek tím, že ignorují escape znaky a proměnné v řetězci. Podívejme se na rozdíl.
$promenna = 2005;
print 'retezec s escape sekvencemi \n\a a promennymi $promenna';
Uložme a spusťme program. Dostaneme kupodivu toto:
$./program.pl
retezec s escape sekvencemi \n\a a promennymi $promenna\n
$
Existují dvě výjimky, které řetězec uvozený apostrofy zobrazí jinak, než jak je napsaný. Těmi výjimkami jsou \' a \\, umožňující do řetězce vložit apostrof a zpětné lomítko. Nebýt nich, tak apostrof nevytiskneme.
Stejný příklad, jen zaměníme apostrofy za uvozovky:
$promenna = 2005;
print "retezec s escape sekvencemi \n\a a promennymi $promenna";
Po spuštění dostaneme:
$./program.pl
retezec s escape sekvencemi
a promennymi 2005
$
(Pokud nejde spustit, pravděpodobně chybí na začátku souboru #!/usr/bin/perl nebo nemáte správně nastavená práva.)
Je možné mít na obou stranách operátoru přiřazení proměnné. Vyhodnotí se proměnná napravo (Perl si zjistí její hodnotu) a tato hodnota se přiřadí do proměnné nalevo.
$pi = 3.142;
$pi_kopie = $pi;
print $pi_kopie;
V takovém případě se vytvoří kopie původní proměnné.
Na jednom řádku můžeme přiřadit stejnou hodnotu i více proměnným. To asi příliš často nevyužijeme, ale je vhodné o tom vědět. Ve skutečnosti existuje něco jako návratová hodnota po operaci přiřazení.
$a = $b = 2005;
Nyní jak hodnota $a tak i $b obsahují hodnotu 2005.
Když provedeme přiřazení do stejné proměnné dvakrát po sobě, původní obsah se ztratí a nahradí se novým.
$p = 1;
print $p; #1
$p = 2;
print $p; #2
Dosud jsme proměnné nikdy nedeklarovali. V Perlu je to možné. Je dobré toho využívat, protože v programu budeme mít větší pořádek. Bude potom na pohled jasnější, kde která proměnná existuje a kde už ne. Nebudeme se věnovat deklaracím do hloubky, to ponecháme na jindy. Uveďme jen, že k deklaraci slouží deklarátor my. Jeho parametrem je jméno proměnné, která bude platná v daném bloku programu.
Příkaz use strict;, uvedený na začátku programu spouští speciální mód, který nás hlídá abychom (mimo jiné) všechny proměnné deklarovali. Pokud zapomeneme nějakou proměnnou deklarovat, program zahlásí chybu.
Další užitečná věc je přepínač -w. Pokud spustíme Perl příkazem perl -w, budou se vypisovat varování, která mohou napomoci odstranit případné chyby. Přepínač lze připsat do prvního řádku programu.
#!/usr/bin/perl -w
use strict;
my $p;
$p = 3;
print $p;
Častější však bývá uvedení řádku use warnings;, který dělá podobnou věc.
#!/usr/bin/perl
use strict;
use warnings;
my $p;
$p = 3;
print $p;
V režimu strict nám Perl nedovolí použít proměnnou, aniž bychom ji deklarovali. Odstraníme-li řádek my $p; program vypíše chybové hlášení a skončí.
Režim strict se ruší příkazem no strict;. Ten budeme používat jen výjimečně. Pokračujme ale přesto v kódu.
no strict;
$q = 3;
print $q;
Proměnnou $q jsme teď definovat nemuseli.
Vícee o use strict;, deklaracích proměnných a případně jiných direktivách bude napsáno v dílech o modulech.
|
||||
KOMENTARZE | ||||
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
|
1. |
Pacman linux Download: 5004x |
2. |
FreeBSD Download: 9214x |
3. |
PCLinuxOS-2010 Download: 8700x |
4. |
alcolix Download: 11096x |
5. |
Onebase Linux Download: 9809x |
6. |
Novell Linux Desktop Download: 0x |
7. |
KateOS Download: 6372x |
1. |
xinetd Download: 2535x |
2. |
RDGS Download: 937x |
3. |
spkg Download: 5040x |
4. |
LinPacker Download: 10209x |
5. |
VFU File Manager Download: 3311x |
6. |
LeftHand Mała Księgowość Download: 7340x |
7. |
MISU pyFotoResize Download: 2973x |
8. |
Lefthand CRM Download: 3673x |
9. |
MetadataExtractor Download: 0x |
10. |
RCP100 Download: 3270x |
11. |
Predaj softveru Download: 0x |
12. |
MSH Free Autoresponder Download: 0x |