use CGI qw/:standard -private_tempfiles/; use Text::CSV; use Fcntl qw( :DEFAULT :flock ); use constant UPLOAD_DIR => "/tmp"; use constant BUFFER_SIZE => 16_384; use constant MAX_FILE_SIZE => 50*1_048_576; # Limit each upload to 50 MB use constant MAX_DIR_SIZE => 100 * 1_048_576; # Limit total uploads to 100 MB use constant MAX_OPEN_TRIES => 100; $CGI::DISABLE_UPLOADS = 0; $CGI::POST_MAX = MAX_FILE_SIZE; my $q = new CGI; $q->cgi_error and error( $q, "Error transferring file: " . $q->cgi_error ); #Some other stuff here print $q->header( "text/html", -expires => "-1s" ), $q->start_html( -title => "Wordcloud Generator", -bgcolor => "#ffffff", -head=>$q->meta({-http_equiv => 'Pragma', -content => 'no-cache'}) ), $q->h2( "Wordcloud Generator" ), $q->hr, $q->p("Processed file:", $file); my $in = $q->upload( "file" ); my $csv = Text::CSV->new ({ binary => 1, eol => $/, sep_char => "\t" }); my $header = "1"; my $numcolumns; while(my $line = <$in>) { if($csv->parse($line)) { my @row = $csv->fields(); #processing the file