[ Nemanja Jakovljevic @ 19.02.2004. 20:48 ] @
sledeci kod:
Code:


sub AUTOFILL
{
    @distros=`find /storage/LinuxPortal/ -type f -iname *.iso`;
    chop @distros;
    foreach( @distros)
    {
        push @niz,[split '/'];
    }
    $br=-1;
    while(++$br < @niz)
    {
        $putanja=join ('/',${niz[$br]}[0..(@niz[$br]-3)]);
        ($ime, $iso) = (${niz[$br]}[(@niz[$br]-2)],${niz[$br]}[(@niz[$br]-1)]);
        ${niz[$br]}[($putanja,$ime,$niz)];
    }
    $br = 0;
    while (++$br<@niz)
    {
        if (${niz[$br]}[0] eq ${niz[$br-1]}[0])
        {
            ${niz[$br-1]}[2]=${niz[$br-1]}[2]."::@{niz[$br]}[2]";
            splice (@niz,$br,1);
        }
    }
    $br=-1;
    open (BAZA,">DATABASE");
    while (++$br<@niz)
    {
        print BAZA (join('::',$niz[$br]));
    }
    close(BAZA);
}


daje output:

Code:
 
[email protected] work $ cat DATABASE
ARRAY(0x815ff1c)ARRAY(0x814e60c)ARRAY(0x814e6b4)ARRAY(0x815330c)ARRAY(0x81533cc)ARRAY(0x8153474)ARRAY(0x815351c)ARRAY(0x8168c00)ARRAY(0x8168ca8)ARRAY(0x8168d50)ARRAY(0x8168e10)ARRAY(0x8168eac)ARRAY(0x8168f54)ARRAY(0x8167120)ARRAY(0x81671c8)ARRAY(0x8167270)ARRAY(0x8167318)ARRAY(0x81673c0)ARRAY(0x8167468)ARRAY(0x8169454)ARRAY(0x81694fc)ARRAY(0x81695a4)ARRAY(0x816964c)ARRAY(0x816970c)ARRAY(0x816a4f4)ARRAY(0x816a5b4)ARRAY(0x816a674)ARRAY(0x816a734)ARRAY(0x816a7f4)ARRAY(0x816a89c)ARRAY(0x816b380)ARRAY(0x816b428)ARRAY(0x816b4d0)ARRAY(0x816b578)ARRAY(0x816b620)ARRAY(0x816b6c8)ARRAY(0x816c20c)ARRAY(0x816c2b4)ARRAY(0x816c35c)ARRAY(0x816c404)ARRAY(0x816c4ac)ARRAY(0x816c554)ARRAY(0x816cf28)ARRAY(0x816cfd0)ARRAY(0x816d078)ARRAY(0x816d120)ARRAY(0x816d1c8)ARRAY(0x816dfe4)ARRAY(0x816e098)ARRAY(0x816e158)ARRAY(0x816e218)ARRAY(0x816e2c0)ARRAY(0x816e368)[email protected] work $


mozete pretpostaviti da ovo nisam hteo.

trebalo bi da bude nesto tipa fsdkjf::dsdsd::dsdsd::dsdsd::dsdsd::dsds
[ Free_Sex @ 19.02.2004. 23:22 ] @
E ceka jsad mi nista nije jasno. Pa jer ti ovo niz @ ili % ?

Nego sto jednostavno ne koristis za ispis :

foreach $clan (@Niz){
print BAZA $clan . "::";
}

Dobro to ce ti dodati visak :: na kraj ali ..... nekapiram sta ce ti ovo BR.
Pa jos onda pocinjes od -1 :)

To mozes koristiti i za onu gore petlju uz manje izmene...



[ Nemanja Jakovljevic @ 19.02.2004. 23:39 ] @
ovo je niz (@) neimenovanih nizova
locirao sam problem al ne znam da resim problem

on je u ovom delu koda:
foreach( @distros)
{
push @niz,[split /\//];
}

a inace koristim od -1 da bi po prvom koriscenju ++$br $br postao 0, iliti prvi clan niza.

i ako pokusam isprintati gore dobijeni niz dobijem ono dole, ali ako uradim @blah=split /\//;
@blah ima ono sto treba da ima. ali ako pokusam push @niz,@blah; opet dobijem njesra
[ Free_Sex @ 20.02.2004. 06:50 ] @
CEkaj kako radi push ..... ja sam to radio jos u sredjoj u asembleru :)
Push i pop :) Ali to je bilo sa stackom. First in, last out cini mi se.

Predpostavljam da ga iz @blah gura u @niz .. ?
Cekaj bre, jer to tebi treba samo da bi okrenuo naopacke niz ?

Jer ako jeste, imas funkciju za to .... ?
[ zi:: @ 20.02.2004. 07:10 ] @
funkcija push ocekuje niz kao drugi parametar, pa je moras zavarati ako hoces da napravis niz nizova.

npr. ovako:

Code:

@s = (1,2,3);
push @r, [@s];
print join('::',@{$r[0]});


ovo bi trebalo da pomogne.


[ bzero @ 20.02.2004. 18:31 ] @
Citat:
Nemanja Jakovljevic:
locirao sam problem ...

on je u ovom delu koda:
foreach( @distros)
{
push @niz,[split /\//];
}


Ukoliko sam dobro shvatio da ti hoces da dobijes array array-a, onda problem nije ovde, ovim ces stvarno dobiti na kraju array @niz, ciji ce clanovi biti array-i, a ne skalari.
Problem je onda verovatno kako pristupas clanovima niza. Npr, da bi pristupio svakom pojedinacnom array-u koji je u promenjivoj @niz:

Code:

foreach $n (@niz)
{
    print join "+", @{$n} ; 
    print "\n";
}

Svaki pojedinacni array je @{$n}, tj njegovi clanovi su @{$n}[0], @{$n}[1], itd...
[ Nemanja Jakovljevic @ 22.02.2004. 11:46 ] @
problem resen uz pomoc bzero-ovog saveta