Pokaż wyniki 1 do 8 z 8

Temat: operacja na kilku plikach

  1. #1

    Domyślnie [Perl]operacja na kilku plikach

    Witam!
    Mam pliki, ktore sa nastepujacej postaci:
    dane_monika_k
    dane_malgorzata_r
    dane_oliwia_z
    itd.

    Z plikow tych chcialabym wyciagnac odpowienia kolumne i je pozniej skleic,

    W tej chwili zastanawiam sie, jak przeszukac pliki o danym wzorze i wyciagnac z nich kolumne.


    Kod:
    my @imie = ('monika', 'malgorzata', 'oliwia');
    my @nazwisko = ('r', 'k', 'z');
    
    my @wiek;
    foreach my $i(@imie){
      foreach my $n(@nazwisko){
            open (WYNIKI, "dane_$i_$n"); #otwieram pliki o takim wzorze
    
                    while(<WYNIKI>)
                    {       
                      chomp $_;
                            my $k=$_; 
                            my @kol = split(/ /,$k);
                            push (@wiek,$kol[4]);          
                    }
             }
    }
    close WYNIKI;
    Dokladnie mam problem w linii:
    Kod:
    open (WYNIKI, "dane_$i_$n");
    Czy moglaby prosic o wskazowki jak poprawnie powinnam to zrobic?
    Ostatnio edytowane przez Gosik : 04-21-2013 - 12:54

  2. #2

    Domyślnie

    Wrzuć do bazy danych i szukaj.
    światło mądrości oświetla drogę z nikąd do nikąd

  3. #3

    Domyślnie

    Cytat Napisał lame Zobacz post
    Wrzuć do bazy danych i szukaj.
    to znaczy?

  4. #4

    Domyślnie

    Po co głowić się nad pętlami, substringami, joinami, splitami, skoro bazy danych wykona to szybciej, po to jest.
    światło mądrości oświetla drogę z nikąd do nikąd

  5. #5

    Domyślnie

    Ale ja chce to zrobic w Perlu

  6. #6

    Domyślnie

    Zmienilam troche moj tok postepowania i wrzucilam wszystkie nazwy plikow do tablicy @dane.
    Teraz z kazdego pliku wyciagam odpowiednia kolumne.
    Kod:
    my @dane;
    foreach my $n(@nazwy){
       open (WYNIKI, "$n");
          while(<WYNIKI>){
             chomp $_;
                   my $k=$_;
                   my @kol = split(/ /,$k);
                   push (@dane,$kol[4]);                  
           }
          
           
    print  "$_ \n" foreach @dane;
    }
    close WYNIKI;
    Tylko mam jeden probelm. Potrafie wyswietlac te kolumny tylko w jednym wierszu. Nie mam pomyslu, jak to zrobic, aby byly wyswietlane w nastepujacy sposob:
    Kod:
    12 22 22 3
    11 12 45 2
    12 11 66 3
    23 32 23 23
    czyli jedna obok drugiej.
    Sadze, ze po petli powinnam powrocic do poczatku wiersza i zrobic odestep i nastepnie wyswietlic wartosci z innej kolumny.

    Czy mglabym prosic o wskazowki w tym zadani?
    Ostatnio edytowane przez Gosik : 04-21-2013 - 20:39

  7. #7
    Zarejestrowany
    Jul 2006
    Skąd
    Łódź
    Postów
    249

    Domyślnie

    Cytat Napisał Gosik Zobacz post
    Witam!
    Mam pliki, ktore sa nastepujacej postaci:
    dane_monika_k
    dane_malgorzata_r
    dane_oliwia_z
    itd.
    Wklej zawartość tych plików, a potem jaki ma być wynik całej operacji.
    Pozdrawiam

  8. #8
    Zarejestrowany
    Nov 2006
    Skąd
    Polska/Poland
    Postów
    1,191

    Domyślnie

    Może załaduj każdy wynik do tablicy,
    daj licznik,
    wyprintuj w pętli {ARR1[$COUNT]} {ARR2[$COUNT]} ...

    (skoncentrowałem się jedynie na wyniku)
    Ostatnio edytowane przez markossx : 05-25-2013 - 21:21
    ***********
    * markossx *
    ***********

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj