SpuÜt∞nφ p°φkazu systΘmu a p°edßnφ dat


Funkce system()

Funkce system vykonß p°φkaz uveden² v zßvorkßch. P°φkaz bude zpracovßn pomocφ shellu /bin/sh, v unixu se pro ka₧d² shell zaklßdß vlastnφ proces. Parametrem m∙₧e b²t cokoli, co je mo₧nΘ zadat shellu /bin/sh ke zpracovßnφ. P°φklad:
system("ls");
system("ls > x.txt") && die "nelze vytvorit soubor x.txt";
$adr = system("ls > x.txt");

Prvnφ p°φkaz vypφÜe na standardnφ v²stup obsah adresß°e,
druh² p°φkaz zapφÜe obsah adresß°e do souboru x.txt,
t°etφ p°φkaz zapφÜe obsah adresß°e do souboru x.txt a do prom∞nnΘ $adr ulo₧φ v²sledkov² k≤d p°φkazu (0 pokud p°φkaz prob∞hl ·sp∞Ün∞).
VÜimn∞te si, ₧e standardnφ v²stup zd∞dφ proces zpracovßvajφcφ p°φkaz ls z perlovΘho scriptu.

Vφce p°φkaz∙ v parametru se odd∞lφ st°ednφkem nebo znakem pro konec °ßdku. Nap°:

system("ls > x.txt; cat x.txt; who");
Funkce system() m∙₧e mφt takΘ vφce parametr∙ , kterΘ se uvßnφ odd∞lenΘ Φßrkou. Prvnφ parametr je interpretovßn jako p°φkaz a tedy spuÜt∞n. DalÜφ parametry jsou interpretovßny jako parametry spuÜt∞nΘho p°φkazu. P°φklad:
system "cat","x.txt","a.txt";
Provede p°φkaz cat, kterΘmu jako parametry p°edß soubor x.txt a a.txt.


Zp∞tnΘ apostrofy

DalÜφ zp∙sob jak spustit proces k vykonßnφ n∞jakΘho p°φkazu je umφstit p°φkazovou °ßdku shellu /bin/sh do zp∞tn²ch apostrof∙. P°φklad:
$datum = "dnes je ".`date`;
$uz = "seznam uzivatelu\n".`who`;
print $datum;
print $uz;
Toto spuÜt∞nφ p°φkazu vracφ hodnotu ve tvaru °et∞zce, kter² je pot°eba ulo₧it do prom∞nnΘ, neposφlß nic na standardnφ v²stup. Pou₧ijeme-li toto volßnφ v kontextu pole (nap°. spolu s funkcφ foreach) vracφ vφce°ßdkov² v²sledek p°φkazu jako seznam °et∞zc∙ (°ßdek). P°φklad:
foreach $rad (`who`) {
$rad =~ /(\S+)\s+(\S+)\s+(.*)/;
print "kdo $1 kde $2 kdy $3\n";
} 


SpuÜt∞nφ p°φkazu pomocφ log. jmΘna

Funkce open je b∞₧n∞ pou₧φvanß k otev°enφ vstupnφho nebo v²stupnφho souboru. Pokud jmΘno souboru zaΦφnß znakem "|", je jmΘno souboru interpretovßno jako p°φkaz operaΦnφho systΘmu, kterΘmu mß b²t vstup p°edßn. Pokud jmΘno konΦφ znakem "|", je jmΘno souboru interpretovßno jako p°φkaz, kter² p°edßvß vstup.

P°φklad:
Obsah adresß°e m∙₧eme p°edat k dalÜφmu zpracovßnφ p°φkazem:

open(ADR,"ls |") || die "chyba\n";

kde: ls je p°φkaz unixu pro v²pis adresß°e, p°φkaz die vypφÜe na standardnφ v²stup uvedenou zprßvu, pokud nenφ mo₧nΘ provΘst open.

E-mail m∙₧eme ze scriptu v²hodn∞ poslat nap°.

open(ZPRAVA,"| mailx Zprava $adr);

kde: mailx je unixov² program pro e-mail, Zprava je subject mailu a $adr je prom∞nnß obsahujφcφ adresßta.


CviΦenφ


P°φklad Φ.7:
Ulo₧te prvnφ v∞ty ze vÜech textov²ch soubor∙, jejich₧ jmΘno zaΦφnß pφsmenem a do souboru prvety.txt. V∞tu opiÜte i na obrazovku. Pokud existuje soubor, jeho₧ jmΘno zaΦφnß na a, kter² nenφ textov², vypiÜte o tom zprßvu na obrazovku. Jedno z °eÜenφ p°φkladu.


DalÜφ kapitola | P°edchozφ kapitola | Obsah

PEGASNETPEGASNET

PEGASNETPEGASNET

PEGASNETPEGASNET

PEGASNETPEGASNET