Pokaż wyniki 1 do 10 z 10

Temat: [PERL]dopisanie zer do wierszo w w pliku

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1

    Domyślnie [PERL]dopisanie zer do wierszo w w pliku

    Mam plik liczby.txt, w ktorych znajduja sie liczby. Wiersze sa roznej dlugosci, dlatego tez chcialabym te krotsze wypelnic zerami.

    Probowalam pokobinowac w ten sposob:

    Kod:
    open (W, '>>liczby.txt'); while (<W>) {
      $line=$_;
      print $line ;
     $row=$row+1;
    
     foreach (@col){     #@col jest to wczesniej zdefiniowana tablica z ilosciami kolumn w pliku
        if ($_<$max){     
          $diff=$max-$_;
       $line=$line." 0 " x $diff ;
        }
     }
    
    close(W);
    print "ilos linii $row \n";
    
     }
    close(W);
    Czy moglibyscie mnie naprowadzic jak to zrobic?

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    1. otwierasz plik wejsciowy do odczytu
    2. otwierasz plik wyjsciowy do zapisu
    3. w petli czytasz z pliku wejsciowego
    4. uzywasz funkcji printf() z odpowiednim formatem i liczba pobrana z pierwszego pliku, piszac wynik do pliku wyjsciowego - calosc to jest 1 linia doslownie
    5. petla sie skonczyla, zamykasz oba pliki, konczysz program

    wszystko o formatach znajdziesz w opisie perlowej funckji printf() - prosciej sie nie da
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3

    Domyślnie

    ok, znalazlam taki prosty przyklad:
    my $num = "123";
    $num = sprintf("%5d", $num);
    $num=~ tr/ /0/;

    Jednakze nie wiem, jak w moim przykladzie zrobić, by dla kazdego wiersza wyswietlalo odpowiednia wartosc np. "%?d", gdy ? to jest maksymalna ilosc kolumn, czyli $max.
    Ostatnio edytowane przez Gosik : 11-10-2012 - 22:21

  4. #4

    Domyślnie

    Cytat Napisał Gosik Zobacz post
    ok, znalazlam taki prosty przyklad:
    my $num = "123";
    $num = sprintf("%5d", $num);
    $num=~ tr/ /0/;

    Jednakze nie wiem, jak w moim przykladzie zrobić, by dla kazdego wiersza wyswietlalo odpowiednia wartosc np. "%?d", gdy ? to jest maksymalna ilosc kolumn, czyli $max.
    Dobra, z tym juz sobie poradzilam, bylo to banalne, ale nie wiem jak zrobic, by zera byly dopisywane na koniec linii, a nie na poczatku.
    Bede wdzieczna za wskazowki.

  5. #5
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    czekaj czekaj... jak dopiszesz zera na koncu liczby to zmieniasz jej wartosc - na pewno tego chcesz?

    Kod:
    $var = sprintf("%05d", $liczba);  # uzupenial zerami z przodu do 5 cyfr
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  6. #6

    Domyślnie

    Cytat Napisał TQM Zobacz post
    czekaj czekaj... jak dopiszesz zera na koncu liczby to zmieniasz jej wartosc - na pewno tego chcesz?

    Kod:
    $var = sprintf("%05d", $liczba);  # uzupenial zerami z przodu do 5 cyfr

    Daze do tego, aby wczytac do zmiennej $num odpowiedni wiersz z liczbami np.:
    2 33 56 77
    i chcialabym dopisac do niego zera odzielone spacja.

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