🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.perl
5 messages
5 total messages Started by foxman Mon, 04 Jul 2011 19:36
tablica hashy
#52260
Author: foxman
Date: Mon, 04 Jul 2011 19:36
27 lines
1350 bytes
Witam,

Mam następującego hash-a

%raporty = (
       001 => {
           nrRaportu         => "001",
           nazwaPliku        => "0001.txt",
           dataRaportu       => "20110705",
           dataKswiegowania  =>  "20110705",
           iloscWplat        =>  "5",
           sumaWplat         =>  "88",
           wplaty => [
               { nrWplaty => "001", dataWplaty => "20110630", kwota => 
36,  },
	      { nrWplaty => "002", dataWplaty => "20110630", kwota => 66,  },
           ],
},
);

jak powinno wyglądać poprawne dodanie kolejnego raportu do hasha oraz 
wplatę?


--
Pozdrawiam
Foxman
Re: tablica hashy
#52261
Author: Adam Osuchowski
Date: Mon, 04 Jul 2011 19:46
6 lines
965 bytes
foxman wrote:
> jak powinno wyglądać poprawne dodanie kolejnego raportu do hasha oraz 
> wplatę?

Pytasz, jak konstruować zagnieżdżone struktury danych w Perlu?
Jeśli tak to najlepiej będzie jak przeczytasz manual perldsc.
Re: tablica hashy
#52262
Author: Stachu 'Dozzie' K.
Date: Tue, 05 Jul 2011 08:00
14 lines
1656 bytes
On 2011-07-04, Adam Osuchowski <someone@somewhere.com> wrote:
> foxman wrote:
>> jak powinno wyglądać poprawne dodanie kolejnego raportu do hasha oraz 
>> wplatę?
>
> Pytasz, jak konstruować zagnieżdżone struktury danych w Perlu?
> Jeśli tak to najlepiej będzie jak przeczytasz manual perldsc.

Dodaj jeszcze perllol do porady. Akurat o rekursywnych strukturach
danych jest chyba dość sporo w dokumentacji dystrybucyjnej.

-- 
Secunia non olet.
Stanislaw Klekot
Re: tablica hashy
#52263
Author: stas53
Date: Tue, 05 Jul 2011 09:19
65 lines
3479 bytes
Też bym zalecał postudiowanie struktur PERLowych,
ale w odróżnieniu od wcześniej piszących Kolegów,
daję poniżej kompletną odpowiedź na Twoje pytania.
Taką ma dziś fantazję.
              Stanisław Romański


    use strict;
    use Data::Dumper;

    # po pierwsze, prawdopodobnie chciales, zeby identyfikatorem byl
lancuch '001' a nie liczba '1'
    # po drugie, nie wiem czemu liczba wplat i ich suma sie nie
zgadzaly ;-(
    my %raporty = (
       '001' => {
           nrRaportu         => "001",
           nazwaPliku        => "0001.txt",
           dataRaportu       => "20110705",
           dataKswiegowania  =>  "20110705",
           iloscWplat        =>  "2",
           sumaWplat         =>  "102",
           wplaty => [
               { nrWplaty => "001", dataWplaty => "20110630", kwota =>
36,  },
               { nrWplaty => "002", dataWplaty => "20110630", kwota =>
66,  },
                     ],
                },

                );

    print Dumper(\%raporty);

    # ja lubie poslugiwac sie referencja do hasha a nie hashem
    my $rraporty = \%raporty;

    # nowa wplata do raportu '001'
    my $nowa_wplata_nrWplaty = '003';
    my $nowa_wplata_kwota = 67;
    my $nowa_wplata_pola = { nrWplaty => $nowa_wplata_nrWplaty,
                                           dataWplaty => "20110701",
                                           kwota =>
$nowa_wplata_kwota, };
    push @{$rraporty->{'001'}->{'wplaty'}}, $nowa_wplata_pola;
           $rraporty->{'001'}->{'sumaWplat'} += $nowa_wplata_kwota;
           $rraporty->{'001'}->{'iloscWplat'} ++;

   # nowy raport
    $rraporty->{'002'}->{'wplaty'} = {
           nrRaportu         => "002",
           nazwaPliku        => "0002.txt",
           dataRaportu       => "20110706",
           dataKswiegowania  =>  "20110706",
           iloscWplat        =>  "2",
           sumaWplat         =>  "46",
           wplaty => [
               { nrWplaty => "001", dataWplaty => "20110630", kwota =>
22,  },
               { nrWplaty => "002", dataWplaty => "20110630", kwota =>
24,  },
                     ],
                };

    print Dumper($rraporty);
Re: tablica hashy
#52264
Author: stas53
Date: Tue, 05 Jul 2011 14:32
71 lines
4121 bytes
On 5 Lip, 11:19, stas53 <sta...@gazeta.pl> wrote:
> Też bym zalecał postudiowanie struktur PERLowych,
> ale w odróżnieniu od wcześniej piszących Kolegów,
> daję poniżej kompletną odpowiedź na Twoje pytania.
> Taką ma dziś fantazję.
>               Stanisław Romański
>
>     use strict;
>     use Data::Dumper;
>
>     # po pierwsze, prawdopodobnie chciales, zeby identyfikatorem byl
> lancuch '001' a nie liczba '1'
>     # po drugie, nie wiem czemu liczba wplat i ich suma sie nie
> zgadzaly ;-(
>     my %raporty = (
>        '001' => {
>            nrRaportu         => "001",
>            nazwaPliku        => "0001.txt",
>            dataRaportu       => "20110705",
>            dataKswiegowania  =>  "20110705",
>            iloscWplat        =>  "2",
>            sumaWplat         =>  "102",
>            wplaty => [
>                { nrWplaty => "001", dataWplaty => "20110630", kwota =>
> 36,  },
>                { nrWplaty => "002", dataWplaty => "20110630", kwota =>
> 66,  },
>                      ],
>                 },
>
>                 );
>
>     print Dumper(\%raporty);
>
>     # ja lubie poslugiwac sie referencja do hasha a nie hashem
>     my $rraporty = \%raporty;
>
>     # nowa wplata do raportu '001'
>     my $nowa_wplata_nrWplaty = '003';
>     my $nowa_wplata_kwota = 67;
>     my $nowa_wplata_pola = { nrWplaty => $nowa_wplata_nrWplaty,
>                                            dataWplaty => "20110701",
>                                            kwota =>
> $nowa_wplata_kwota, };
>     push @{$rraporty->{'001'}->{'wplaty'}}, $nowa_wplata_pola;
>            $rraporty->{'001'}->{'sumaWplat'} += $nowa_wplata_kwota;
>            $rraporty->{'001'}->{'iloscWplat'} ++;
>
>    # nowy raport
>     $rraporty->{'002'}->{'wplaty'} = {
>            nrRaportu         => "002",
>            nazwaPliku        => "0002.txt",
>            dataRaportu       => "20110706",
>            dataKswiegowania  =>  "20110706",
>            iloscWplat        =>  "2",
>            sumaWplat         =>  "46",
>            wplaty => [
>                { nrWplaty => "001", dataWplaty => "20110630", kwota =>
> 22,  },
>                { nrWplaty => "002", dataWplaty => "20110630", kwota =>
> 24,  },
>                      ],
>                 };
>
>     print Dumper($rraporty);

Z poprawką, że linijka za '# nowy raport ' powinna być
       $rraporty->{'002'} = {


;-)  S.R.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads