Egyébként picit furának tartom, hogy Perl alatt explicite kell ilyet kérni.
- f0xhu blogja
- A hozzászóláshoz be kell jelentkezni
- 890 megtekintés
Hozzászólások
aki perllel foglalkozik, az első napon megismeri ezt a parancsot :)
--
\\-- blog --//
- A hozzászóláshoz be kell jelentkezni
Max a masodikon ;-)
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
jaja :)
(meg azt is, hogy a $_ sok esetben elhagyhato)
- A hozzászóláshoz be kell jelentkezni
Inkabb kimenteni erdemes a $_ -t, mert az erteke adott esetben akar percrol percre is valtozhat. Foreach ciklusban foleg.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
pont ez a lenyege :)
a fenti peldaban a printnel es a chompnal is felesleges (bar az atlathatosagot javitja ha szerepe, de a perl pont attol jo hogy a magikus matyohimzes eletre kel es mukodik :D)
- A hozzászóláshoz be kell jelentkezni
Persze, de en mar szaladtam bele abba,hogy ciklusba beagyazott ciuklusban kellett volna a kulso $_ erteke...
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A chomp-ot hanyagold, eléggé platformfüggően lett megoldva (össze tudja keverni a három oprendszer különböző sorvégeit, és nem mindig úgy teszi, ahogy elgondolod).
Helyette ez mindig működik: s/\s+$//;
. Ez az összes "üres karaktert" törli a sor végéről.
- A hozzászóláshoz be kell jelentkezni
+1
mókás, mikor a \r a sor végén marad...
- A hozzászóláshoz be kell jelentkezni
Ebben az esetben nem a legjobb otlet, mert ha szokozre vegzodik a fajl (van ilyen!) akkor file not exists jon szembe.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Par aprosag, ami talan segit majd a kesobbiekben:
Ha ilyet irsz
for (@array) {
chomp $_;
...
}
annak nem csak a ciklusmagon belul van hatasa, ugyanis a
$_
egy alias az aktualis tombelemre, vagyis megvaltoztattad a tomb elemeit is.
Nincs azzal baj, ha ezt csinalod, csak ebben a formaban konnyen elsiklik folotte az olvaso tekintete, ugyhogy tisztabb, szarazabb erzes ezt irni (a chomp mukodik tombokre is):
chomp( @file_list = qx(ls -t $dir) );
Tovabba a peldad csak akkor fog mukodni, ha a
/path/dir
konyvtarbol futtatod, mert az
ls -t
relativ utvonalakat ad vissza. Ezt is egyszeru kikerulni, peldaul igy:
$dir = '/path/dir';
chomp( @file_list = qx(ls -t $dir) );
for (@file_list) {
open CURRFILE, "<", "$dir/$_" or die $!;
...
}
Plusz a standard mantrak:
-
use warnings;
jelez egy rakas lehetseges hibat
-
use strict;
+ lexikalis (my) valtozok
elkapja az elgepelt valtozoneveket, meg sok minden mast
- lexikalis filehandle:
open my $fh, '<', $file
nem kell expliciten lezarnod a file-jaidat, hanem a perl automatikusan zarja oket, amikor a lexikalis filehandle scope-ja veget er
- A hozzászóláshoz be kell jelentkezni
Azert ez a 'perl majd lezarja' hozzaallas elegge elitelendo szamomra. Inkabb zarja le az ember explicite, minthogy sehogy se legyen lezarva. A szemnek is jobb tud lenni. A lexikalis filehandle inkabb azert jo, mint a tobbi lexikalis valtozo.
Bar, megvallom oszinten, rovid scripteknel nem szeretem a strict-et. Tobb elszallast tud okozni, mintha nem hasznalom. Volt mar olyan, hogy ido hianyaban inkabb toroltem az use strict-et. Nem formazott.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
A Data::Dumper az ember legjobb barátja.
__________________________________
2e845cb4c3a5b5bd6508455b1739a8a2
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni