van ez a kód és nem értem miért lett az egész 'qq' lista a tömb[0] eleme és miért nem 0,1,2,3
próbáltam split szétszedni de nem ment. A ref() függvény meg semmivel sem tért vissza.
Tud valaki segíteni?
1) hogy lehet a tömböt 'normálisan' (0,1,2,3) feltölteni? - Válasz meg van, qw és nem qq
2) valamint hogyan lehet szétkapni a listát elemeire? Szóval hogy ha van egy string pl egy qq-ból akkor azt hogy lehet elemeire bontani?
#!/usr/bin/env perl
use warnings;
use strict;
my @reversed = ();
my @lists = qq( one two three four);
foreach my $string (@lists)
{ push @reversed, scalar (reverse $string); }
print @reversed,"\n";
print $reversed[0],"\n"
ruof eerht owt eno
ruof eerht owt eno
Hozzászólások
Mert nem qq, hanem qw kellene arra, amit szeretnél.
Szia,
A qq hatására sztringet képzel, szóval, ami a qq-n belül van, egy sztring lesz :) ( http://www.tutorialspoint.com/perl/perl_qq.htm ) , a qw jobb erre a célra ( http://www.tutorialspoint.com/perl/perl_qw.htm ), mint előttem javasolták, de ha nem vagy biztos abban, mit használj, ajánlom, hogy rendes listát képezz.
Pl.:
my @array = ("elem1","elem2","elem3"..."elemN");
Így te is jobban látod, hogy mi is történik és a q betűs mágiák sem zavarnak meg :)
Üdv,
LuiseX
óóóóó, valóban. köszönöm a választ. tényleg itt volt a Q elásva :D
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
A masodik kerdesedre a valasz: sehogy. Amikor string lett a listabol, onnantol nem tudni, hol voltak az eredeti hatarok. Viszonylag elterjedt, de rossz szokas elobb join-olni es kesobb split-elni, mert az igy kapott eredmeny nem feltetlenul lesz egyezo a kiindulassal.
de nem lehet valahogy felaprózni mint pl az awk vagy a cat parancs?
arra gondolok h csereljuk le a szóközöket vesszőre vagy a szóközök mentén tördeljük.
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
Pontosan erre jó a split - máshogy, de ugyanazt csinálja, mint az awk splitje.
(A jegyzőkönyv kedvéért jegyezzük meg, hogy a cat nem apróz, az csak egy jámbor cica: az a cut, ami hentel.)
na igen, cut-ra gondoltam.
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
Mint emlitettem, rossz a koncepcio: mi fogja garantalni, hogy a szeparator sehol sem szerepel az eredeti adatokban, akar tobbszor egymas utan, ami bekavar a split-nek? Miert nem jo az, ha csak ott fuzod ossze az adatokat, ahol tenyleg igy van rajuk szukseg? Sok problemat megsporolhatsz ezzel hosszabb tavon. Hagyjuk meg a favago modszereket az amatoroknek.
Ami ezt garantálja, az egy szabály.
Ilyen, amatőröknek való adathalmazt találunk pl. az /etc/passwd vagy /etc/shadow fájlban.
Itt jönne a közhely, hogyaszongya feladathoz eszközt.
(Ugyanezt az amatőr módszert alkalmazza az awk az indexben többdimenziós tömbök emulálására - adott egy ritkán előforduló szeparátor alapértelmezésként, amit az adatok ismeretében lehet hangolni).
1. nincs ilyen szabaly, legalabbis amennyire a perl interpretert ismerem, es meglehetosen jo baratsagban vagyunk
2. a peldad rossz, mert a passwd es a shadow formatuma is kotott (a mezok szama ismert, elore rogzitett elvalaszto karakter van, ami egyetlen mezoben sem szerepelhet). Ilyet altalanossagban nem tetelezhet fel senki.
3. ne ragaszkodj mar ennyire a rossz beidegzodesekhez, hidd el, en csak segiteni akarok egy tipikus hiba elkeruleseben
Az, hogy a formátum kötött, az a szabály. Konkrétan mindenki erre épít, aki az adott feladatban túllövésnek tartja az olyan hibatűrő struktúrákat, mint pl. az xml. Ha a szkript írja és olvassa is az adathalmazát, máris nem az ördögtől való a skalárból kompozitba és vissza konverzió, nagyképűen: a (de)szerializálás.
Az pedig, hogy egy szkriptet a végtelen formai bizonytalanságra írunk nem tipikus feladat, még ha nem is tiltja semmi.
Akkor még egyszer a közhely: feladathoz az eszközt.
persze nincs garancia a bemenetre de ha szöveges állományt kell feldolgoznod akkor mit csinálsz?
valamilyn módon parsolnod kell.
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
A sehogy erős túlzás: csak akkor igaz (akkor sem feltétlenül), ha a joinoló meggondolatlan volt, és úgy választotta meg az elemek közti határolót, hogy később ne legyen egyértelmű, hogy ki kicsoda.
A nem extrém esetre adott (legegyszerűbb) válasz a split() függvény - gyanítom, hogy erre kíváncsi a kolléga.
perldoc -f split
De minta hogy azt írták neked a qw() -kell qq() helyett
----
올드보이
http://molnaristvan.eu/
amiután zárójelbe raktam a tömböt már is működött, addig syntax error-t dobott, de köszönöm. Valóban egy ilyen megoldást kerestem csak nekem valamiért nem ment a split függvény.
my $stringed = qq( one two three four );
print $stringed,"\n";
my @tombod = split(/ /, $stringed);
foreach (@tombod) {
print "- $_ -\n";
}
--
A legértékesebb idő a pillanat amelyben élsz.
https://sites.google.com/site/jupiter2005ster/
Ilyet is lehet:
my @list = (1, 2, 3, 4);