Pokaż wyniki 1 do 2 z 2

Temat: przekazanie zmiennej do pętli

  1. #1
    Zarejestrowany
    Oct 2012
    Postów
    7

    Domyślnie przekazanie zmiennej do pętli

    czesc wszystkim mam taki skrypt:

    my $counter = 0;
    open IN, "/home/reboots_kpi/inputs/$data-TAC-PL-reboot_newtv.csv";
    open OUT, ">/home/reboots_kpi/reboots/mac_reboot.csv";

    while(<IN>)
    {
    $counter++;
    next if $counter < 0;
    my @linia = split(/;/,$_);
    print OUT "$linia[0]\n";

    }
    close IN;
    close OUT;

    open FILE, "/home/komortom/reboots_kpi/reboots/mac_reboot.csv";
    open FILEOUT, ">/home/komortom/reboots_kpi/reboots/result_reboot.csv";
    my %count;
    while (my $line = <FILE>) {
    foreach my $word($line) {
    $count{$word}++;
    }
    }
    for my $word (sort keys %count) {
    print FILEOUT "$count{$word};$word\n";
    }
    close FILE;
    close FILEOUT;


    pierwsza czesc skryptu wybiera z pliku IN pierwsza kolumne a druga czesc skryptu zlicza powtorzenia tzn ile raz powtorzyl sie MAC_adres.
    I teraz jak przerobic skrypt zeby nie wczytywac pliku FILE (gdzie sa MAC_adressy) tylko przekazac bezposrednio wynik z OUT, tzn nie zapisywac MAC_adressów do pliku tylko przekazac dalej do czesci co zlicza powtorzenia jako zmienną
    probuje petla for ale mi cos nie idzie

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

    Domyślnie

    Calosc mozna znacznie uproscic:

    Kod:
    # to pomoze wylapac bledy i wymaga nieco wiekszej dyscypliny od programisty
    use strict;
    use warnings;
    
    #tu trzymamy odnalezione adresy MAC
    my %mac;
    
    open IN, "/home/reboots_kpi/inputs/$data-TAC-PL-reboot_newtv.csv";
    while(<IN>) {
      my @linia = split(';',$_);
      # tworzy hash, klucz to adres MAC, wartosc to ilosc wystapien w pliku
      $mac{$linia[0]}++;
    }
    close IN;
    
    open FILEOUT, ">/home/komortom/reboots_kpi/reboots/result_reboot.csv";
    for my $word (sort keys %mac) {
      # CSV ma najpierw ilosc wystapien a pozniej MAC
      print FILEOUT "$mac{$word};$word\n";
    }
    close FILEOUT;
    Jak wastawiasz kod na forum to uzywaj markera CODE a nie pogrubienia bo to rozwala identacje i ciezko sie czyta.
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52