Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    1

    Dividere un array in tante parti, da scrivere

    Ciao a tutti,

    sono nuova al Perl e sto cercando di fare un'operazione banale...ma che mi sta facendo diventare matta.
    Ho un array formato da circa 41 mila elementi. Voglio dividere il mio array in 17 parti, ed ognuna di queste parti voglio scriverla in un file diverso. Ho scritto il seguente script, che ovviamente non funziona:

    ################################################## ###############
    #!/usr/bin/perl

    use strict;
    use warnings;

    my $file=$ARGV[0]; #il file da cui mi ricavo i 41 mila elementi.
    open (FILE, "<$file") || die "cannot open $file";

    my @data=<FILE>;

    foreach my $name (@data){
    chomp $name;
    $name=~s/\r\n\s+\t//g;
    my @slice;
    for (my $j=0;$j<=16;$j++){
    for (my $i=0;$i<=2499;$i++){

    $slice[$j][$i]=split(", ",$name);

    }
    }
    print "$slice[0][0]\n";
    }

    close FILE;
    ################################################## ####################

    La mia idea era quella di creare un array di array, e poi printare ciascun array in un file diverso....
    Esiste un modo piu' semplice? Dove sbaglio nel fare questo?
    Vi prego, sono esasperata.......

    Grazie in anticipo!
    Ciao!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    268
    a quanto sembra dal tuo codice, i 41.000 elementi del tuo file sono fra loro separati da un "vai a capo". Se così è:
    Codice PHP:
    #!/usr/bin/perl
    my $file=$ARGV[0]; #il file da cui ricavo i 41 mila elementi.
    open (FILE"<$file") || die "cannot open $file";
    my $i=0;
    my $j=0;
    open (PROG,">file$j.txt");
    while (<
    FILE>)
    {
      if (
    $i==2499#cambi questo nr sei vuoi ridurre/aumentare il nr dei files
      
    {
        
    $j++;
        
    $i=0;
        
    close (PROG);
        
    open (PROG,">file$j.txt");
      }
      print 
    PROG $_;
      
    $i++;
    }
    close (PROG);
    close (FILE); 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.