Van egy fájlom, ami ";"-vel elválasztva tartalmaz információkat.
pl:
info1;info2;info3
info4;info5;info6
info7;info8;info9
info10;info11;info12
A kérdésem az lenne, hogy hogyan tudom ezeket beolvasni 1-1 tömbbe vagy mátrixba úgy, hogy az egyes oszlopok elemei egyenként is címezhetők legyenek.
pl. a 2. oszlop 3. elemét akarom kiválasztani, nem kell az egész oszlop, csak ez az egy elem
Eddig ezzel a módszerrel próbálkoztam:
open(FILE,"
my @info=;
my $count;
for ($count = 0; $count != 50 ; $count++){
@F = split(";", @info[$count]);
print "Első oszlop: $F[0]\n";
print "Második oszlop: $F[1]\n";
print "Első és Második oszlop: "@F[0,1]\n";
}
close FILE;
A cél az volna, hogy ne csak egész oszlopokat tudjak listázni, hanem egyes elemeket is ki tudjak íratni.
Előre is köszi a segítséget!
- 4239 megtekintés
Hozzászólások
Azt javasolnám, hogy először nézz utána a referenciáknak, leginkább a tömbreferenciának.
Ha azt érted, akkor meg tudod oldani - amíg nem érted, addig a megoldással sem tudsz mit kezdeni.
Más kérdés, hogy akár tömbelemként tárolt hashekkel is körüljárhatnád, de az gyávaság volna.
- A hozzászóláshoz be kell jelentkezni
Ez jó: "gyávaság volna" :D
Nos nézelődök tovább, mi mást tehetnék. :)
- A hozzászóláshoz be kell jelentkezni
Nem titkolózásnak szántam, de tényleg nem vezet hozzá királyi út, de ami vezet, egyáltalán nem járhatatlan:
http://www.perlmonks.org/?node_id=90647
vagy
http://www.caveofprogramming.com/perl/perl-array-of-array/
- A hozzászóláshoz be kell jelentkezni
open(FILE, "x.txt") or die "Ez nem megy:".$!;
while(){
chomp;
@A=split(";");
print $A[0]," --- ", $A[1], "---", $A[2],"\n";
};
close(FILE);
Jelezném, több, mint tíz éve nem láttam perlt, szóval lehet benne hatalmas marhaság is, ha valaki gyakorlott szemmel nézi!
Kiindulási alapnak talán jó. (nem pont az, amit te akarsz, ahhoz még bővítgetni kell rajta)
ui: hogy lehet itt formázott szöveget berakni?
- A hozzászóláshoz be kell jelentkezni
HZ szkriptje modosítva es kesz is:
my @sorok = ();
open(FILE, "x.txt") or die "Ez nem megy:".$!;
while(){
chomp;
@A=split(";");
print $A[0]," --- ", $A[1], "---", $A[2],"\n";
%adat = (0 => $A[0] , 1 => $A[1], 2 => $A[2]);
push (@sorok, \%adat);
};
close(FILE);
Kiiratni igy kell:
[0] ahanyadik sor
print ${$sorok[0]}{0} . " " . ${$sorok[0]}{1} . " " . ${$sorok[0]}{2} . "\n";
Üdv
Szijártó Zoltán
Aki tud az alkot, aki nem tud az csak szövegel.
- A hozzászóláshoz be kell jelentkezni
Ezt át kellene tenni valami olyan oldalra, ami nem nyeli le a html tagnek látszó elemeket (pl. pastebin), mert a while már nálam is hiányos. :(
- A hozzászóláshoz be kell jelentkezni
Vagy kéne tudni azt a HTML referenciát, ami kiírja azt, amit a parser megesz.
< = & l t ;
> = & g t ;
Persze szóközök nélkül, és akkor látszik a forrásban szépen.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Bocs, ha segíteni akarok valakinek, akkor hadd ne kelljen egy (esetleg hosszabb) kódot még átszerkesztenem, hogy ne kerüljön bele olyan karakter, amit eltüntet a szerver vagy a böngésző!
Arról nem beszélve, hogy a szóközöket is lenyeli, ami még bosszantóbb. Tudom, cseréljem -re...
(imádom az ilyen nagyképűsködő beszólásokat, na... Különösen, hogy eszerint te sem ismered az általad hivatkozott referenciát:
< >)
- A hozzászóláshoz be kell jelentkezni
Ismerem, csak egyszerűbb volt, és nem maradt ki belőle semmi olyan, ami miatt ne lett volna érthető ;)
Különben meg, ha valóban segíteni akarsz: http://myeasywww.appspot.com/
Mert ha kimarad a beküldött szövegből ez-az, akkor nem lesz segítségére senkinek.
Pl:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
És csak +1 CopyPaste
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Azért - mivel látható, hogy érdeklődő műkedvelő a kérdező - érdemes elárulni, hogy ez nem multidimtömb, hanem a probléma hashtömbre leképezése, szintén referencia, hashreferencia felhasználásával.
- A hozzászóláshoz be kell jelentkezni
Ld. pl. itt: http://search.cpan.org/~tmtm/Text-CSV-Simple-1.00/lib/Text/CSV/Simple.pm
Perl-t az integralt CPAN-ert szeretjuk. Nem azert mert szep vagy gyors vagy konnyu benne haladni, hanem mert MINDENre van CPAN modul, igy a kereket sose kell ujra feltalalni.
- A hozzászóláshoz be kell jelentkezni
undef $/;
($file = <>) =~ /^(.*?)\n/;
$cols = ($1 =~ tr/;/;/) + 1;
@lines = split(/[;\n]/, $file);
print $lines[$ARGV[1] * $cols + $ARGV[0]]
./valami.pl file oszlop sor
- A hozzászóláshoz be kell jelentkezni