Hlavní navigace

Názory k článku
Perličky: objekty naruby

Yenya
Yenya (neregistrovaný)
17. 4. 2008 13:19 Nový

qq/\n/

celé vlákno
Diky za pekny clanek. Mam drobnou pripominku: proc pisete qq/\n/ misto "\n"?
To druhe je jednak kratsi, a jednak se (IMHO, YMMV, IANAL, ... :-) o mnoho lepe cte.

Ono vubec ty ruzne q! q/ a podobne jsou dost spatne citelne. Ja kdyz uz, tak (treba pro obaleni viceradkoveho SQL prikazu v DBI) pouzivam neco jako

$dbh->prepare(q{
    SELECT id, pocet_bodlin
    FROM jezci
    ORDER BY pocet_bodlin
});

- pri pouziti q{} misto q// je aspon opticky jasne, ze "tady neco zacina" (oteviraci zavorka) a "tady neco konci" (uzaviraci zavorka).

-Yenya
pht
pht (neregistrovaný)
17. 4. 2008 15:56 Nový

Re: qq/\n/

celé vlákno

Diky za pekne ohodnoceni.

Obecne se radi pouzivat kvuli lepsi citelnosti q a qq pro nektere jednoznakove konstanty, napriklad q/ / namisto ' ' a q/"/ misto '"'. (A pro nektere viceznakove pak operator x: q/ / x 5 a nikoliv '     ' - v tomhle proporcionalnim fontu ani neni poznat, kolik je tam mezer). Pak abych nemusel premyslet, co kam dat, jsem si vymyslel a zvykl i na qq/\n/. Sice je to delsi, ale nemusi se hrabat na shift a nejak uz mi to prsty pisou automaticky.

U toho viceradkoveho SQL bych zase ja pouzil here document (se spravnymi uvozovkami):

$dbh->prepare(<<'_END_SQL');
    SELECT id, pocet_bodlin
    FROM jezci
    ORDER BY pocet_bodlin
_END_SQL

Ale nakonec, timtoudy ...

pht
pht (neregistrovaný)
17. 4. 2008 16:04 Nový

Re: qq/\n/

celé vlákno
PS. jeste k tem zavorkam.

Souhlasim, ze pokud je to neco delsiho, vyplati se pouzit {} a to zejmena v regexovem operatoru. // je ale pro kratsi zapisy (pro mne) ok, jelikoz pokud to neni daleko, tak je hezky carami oddeleno /odsud sem/.

Pouziti jinych oddelovacu (vykricniky carky atd) v tichosti pretrpim, ackoliv si myslim, ze je to drobna sikana, a o vecech typu $x =~ mama bez ostychu tvrdim, ze to je zverstvo.
uživatel si přál zůstat v anonymitě
17. 4. 2008 20:31 Nový

Re: qq/\n/

celé vlákno
$x =~ mama je ok, zverstvo je $x =~ m ama :)
Yenya
Yenya (neregistrovaný)
21. 4. 2008 11:19 Nový

Re: qq/\n/

celé vlákno
S tim <<'_END_SQL' je problem, ze pro vice argumentu mate ta data v nelogickem poradi (teda v jinem nez je ctete normalne):

$dbh->selectrow_array('SELECT a FROM b WHERE c=?', {}, $c);

ma argumenty ve stejnem poradi jako nasledujici:

$dbh->selectrow_array(q{
        SELECT a
        FROM b
        WHERE c = ?
}, {}, $c);

zatimco tady ctete SQL prikaz az nakonec.

$dbh->selectrow_array(<<'EOF', {}, $c);
        SELECT a
        FROM b
        WHERE c = ?
EOF

Porad mi prijde q{} lepsi nez here-document. Ale samozrejme TIMTOWTDI.
-Yenya
Peter Ambrož

qq??

celé vlákno
okej, kod by bol celkom zrozumitelny. ale vysvetli mi niekto to qq/\n/ ?? a tiez qw. akosi som nepostrehol, co to robi
Michal Svoboda
18. 4. 2008 6:11 Nový

Re: qq??

celé vlákno
qq je misto uvozovek, qw je v zasade zkratka za split(/s+/, ...). Proc pouzivam qq viz vyse, jinak doporucuji si precist quote-like operators z man perlop.
Zasílat nově přidané příspěvky e-mailem