BEG: $0 z bashe a krajeni
David Olszyński
hisaak na mendelu.cz
Pondělí Srpen 19 13:35:34 MEST 2002
Matej Cepl wrote:
> Dobrý den,
>
> jsem začátečník s perlem (zatím jsem pracoval jenom s bashem a trochu s
> Pythonem, ale ten mi připadne drobátko overkill na spoustu věcí) a měl bych
> dva dotazy, které se mi nepodařilo rozluštit z toho, co jsem úvodních
> materiálů, které jsem na webu potkal.
>
> 1) Co je v $_[0] při spuštění skriptu?
Podle me nic. Mozna si to pletete s polem @ARGV.
> Podle logiky bashe (a mám pocit, že
> perl je tak trochu "advanced bash" což se mi na něm docela líbí) by to měl
> být název skriptu, ale to co jsem našel mi tvrdí, že to je první argument
> skriptu (jak jste jistě pochopili, v tomto okamžiku nemám žádný perl po ruce
> a nechce se mi stahovat 10MB+ po telecomím telefonu; ke svému počítači s
> Linuxem se dostanu až asi za dva týdny).
>
> To jest, co udělá tento kousek skriptu?
>
> if (`basename $_[0]` eq 'pdfvlnlatex') {
> $prog = 'pdflatex';
> }
> else {
> $prog = 'latex';
> }
basename: příliš málo argumentů
Více informací získáte příkazem `basename --help`.
Asi by tam melo byt $ARGV[0]. A i tak by to nedelalo pozadovane, protoze
vystup toho volani basename by byl ukoncen koncem radku.
> Existuje nějaká interní verze bashovského basename?
Nevim, man perlfunc mlci, ale na tohle by stacil jeden prikaz s///.
>
> 2) Nejsem si úplně jist s argumentem \1 v příkazu s. Mám-li tento kousek
> skriptu (na krájení emailové zprávy):
>
> foreach $msg (@_) {
> $_ = $msg;
> s/^Subject:\s*(.*)\n/\1/;
> chomp;
> ... další zpracování ...
> }
>
> mám výsledně v $_ subject zprávy?
V urcitem okazmiku mozna ano, ale na konci cyklu nejspis ne.
>
> Děkuji moc a omlouvám se za začátečnické dotazy (a za to, že mám dvě otázky
> v jedné zprávě).
Doporucoval bych intenzivnejsi cetbu manualu ci velbloudi knihy a taky hodne
samotneho testovani. Jinak tady stravime podobnymi dotazy spoustu casu. ;-)
hisaak
Další informace o konferenci Perl