Here documents

Ukoliko od prije niste čuli za "Here documents", s pravom se možete upitati čemu što se tako čudno zove uopće može služiti. Riječ je, pojednostavljeno rečeno, o načinu kako običan tekst ubaciti unutar programskog koda, a pri tome se može sačuvati i formatiranje i izvršiti supstitucija varijabli. Here documents se rabe u programiranju u Unix shellu, Perlu, PHP-u, Windows PowerShellu i mnogim drugim jezicima. Kako je najlakše ovaj princip pokazati na primjeru, idemo odmah s jednim jednostavnim  primjerom:

#!/bin/sh
datum=`date +"%d.%m.%Y."`
cat <<END
Poštovani korisniče,
danas je $datum, što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.

Zahvaljujemo,
IT team
END

Ovaj primjer je pisan u Bash shellu, te će izvršavanje ove skripte ispisati ovakav ispis:

     Poštovani korisniče,
danas je 15.10.2010., što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.

Zahvaljujemo,
IT team

Umjesto naredbe cat, koja ovdje služi samo kao primjer, možete rabiti mail, write ili bilo koju drugu naredbu koja očekuje ulaz sa tipkovnice. Ovaj primjer je koristan za obavještavanje studenata (obično ćemo to činiti iz crona) da će im na određeni datum isteći korisnički račun ukoliko ne donesu potvrdu o upisu godine (u ovisnosti o politici na vašoj instituciji). No, vratimo se samom primjeru.

Znak "<<END" je oznaka gdje počinje tekst kojeg ne treba interpretirati kao naredbe, nego kao obični tekst. No, ipak se vrši substitucija varijabli pa možete rabiti varijable koje ste definirali u samoj skripti ili pak vanjske varijable iz okoliša (environmenta) skripte. Oznaka kraja teksta je ista riječ, samo bez znakova "<<"

Valja napomenuti da riječ ne mora biti "END", može biti bilo koja jedinstvena riječ, a najčešće se rabi "EOF", "END" ili kod nas "KRAJ" i slično. Jedna važna stvar, ukoliko oznaku početka Here documenta stavite u navodnike (bilo dvostruke, bilo jednostruke!), substitucija varijabli se neće obaviti (primjerice, cat <<"END" ili cat <<'END'):

     Postovani korisnice,
danas je $datum, što je krajnji rok
da obnovite svoj status na ustanovi
i zadržite svoj korisnički račun.

Zahvaljujemo,
IT team

I drugi programski jezici podržavaju Here documents. Evo primjera za programski jezik Perl:

#!/usr/bin/perl -w
my $posiljatelj = "Sistem administrator";
my $primatelj = "Pero Peric";

print <<"END";

Dragi korisnice $primatelj,

Prekoracili ste diskovnu kvotu koja Vam je dodijeljenja.

Molimo da najhitnije obrisete visak datoteka iz Vaseg direktorija.

$posiljatelj

END

Dakle, uporaba je slična. Bitna razlika je da ukoliko stavite jednostruke navodnike, substitucija varijabli se neće obaviti (pisat će $posiljatelj i $primatelj).

Za popularni skriptni jezik PHP situacija je nešto drugačija, a i "<<" se mijenja u "<<<":

<?php

$adresa = "root@domena.hr <Sistem administrator>";
$primatelj = "Pero Peric";
echo <<<END

Vasa zaporka je stara preko 2 godine. Molimo, promijenite je odmah.
Ukoliko trebate pomoc, obratite se Vasem sistem administratoru na adresu $adresa.

END
;

?>

Također, moguće je cijelu konstrukciju dodijeliti varijabli, preko oblika "$varijabla = <<<EOF". Dalje s varijablom možete činiti što vam je volja.

Nadamo se da su primjeri bilo dovoljno jasni te da smo vam uspjeli razjasniti čemu Here documents služe, te da ćete ih moći ubuduće samostalno rabiti.

 

KEYWORDS: heredoc here doc documents

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet