in reply to Re^2: split the text file to multiple arrays
in thread split the text file to multiple arrays

Your code does not compile

Missing right curly or square bracket at 1194338.pl line 100, at end of line
syntax error at 1194338.pl line 100, at EOF
1194338.pl had compilation errors.

Try

#!/usr/bin/perl use strict; use warnings; use Time::Piece; # current date/time my $t = localtime; my $date = $t->wdayname.' '.$t->dmy('/'); my $time = $t->hms; # input data my $dest = "C:/Perl-Script/"; my %hdata = build_hash($dest."Bulletin.txt"); # output html open OUT, ">". $dest."Bulletin.html" or die "$!"; print OUT qq( <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html> <head> <title>My Learning Page</title> <style type="text/css"> body { background-color: #ccccff; } h2 { color: #0; font-size: 2em; } th { background-color: #e0e0e0 } td { background-color: #ffffff } </style> </head> <body> <h2>My Home Page</h2> <h2>Bulletin Date $date $time</h2>\n); foreach my $key (sort keys %hdata) { if (($key eq '"$Persons Absences?"') || ($key eq '"$Replacement Persons?"') || ($key eq '"$Room Changes?"')){ print OUT qq!<h3>$key</h3> <table border="1" width="100%" style="border-color:#e0e0e0" cellpa +dding="5" align="left">\n!; my @arrays = @{$hdata{$key}}; for my $i (1..$#arrays) { print OUT '<tr>'; my @col = split(/,/,$arrays[$i]); for my $j (1..$#col) { $col[$j] =~ s/"//g; my $td = ($i==1)? "th" : "td"; print OUT qq!<$td align="left">$col[$j]</$td>!; }; print OUT "</tr>\n"; }; print OUT "</table>&nbsp;<br>\n"; }; } print OUT "</body></html>"; close OUT; #------------------------------------- # This subroutine split text file to # number of arrays for data processing # ------------------------------------- sub build_hash{ my $infile = shift; my %data; my $last =''; open my $ifh,'<',$infile or die "$!"; while (my $line=<$ifh>) { chomp $line; if ( substr($line,0,2) eq '"$' || substr($line,0,1) eq '$') { $last = $line; } push @{$data{$last}},$line; } close $ifh; return %data; }
poj

Replies are listed 'Best First'.
Re^4: split the text file to multiple arrays
by mhoang (Acolyte) on Jul 07, 2017 at 00:23 UTC

    This week I am learning a lot from Huck and poj for data reference, hash of array and html presentation. I really appreciate it. The page looks fantastic. Both of you deserve a Zen Hug from me. However I have a three small questions: 1. Is there any way to get rid of the quotation mark, $ and ? in $key before displaying using reg expression I have tried $key =~ s/\"$/ / but cannot get rid of ?" on the right side 2. I understand that we can only sort the hash $key in alphabet order, but is there any way to list the title in the order that we want in html page. 3. I like to learn how to use perl modules, for example HTML-Table,HTML-Template v.....Where should I start?

    Nirvana is Now or Never

      Is there any way to get rid of the quotation mark, $ and ? in $key

      $key=~s/[\"\$\?]//g;

      is there any way to list the title in the order that we want

      Remember push @tables,$line;. that made an array in the order that the tables came in. This would print the tables in that order

      foreach my $key (@tables) {
      If you had an array
      my @order=('"$Persons Absences?"','"$Replacement Persons?"','"$Room Ch +anges?"'); foreach my $key (@order) {
      It would print them in that order.

      Where should I start?

      I like to start by googling for examples of other people already using them and reading that code

        Any one has the idea why I put the script and the css sheet to the same folder it will apply the style to the web page, but if I leave the script in different folder, it will not apply css style. And if I remote log in to the server as the administrator to open the html page. It shows all styles, but if I did not remote log in as administrator it will not show all the css styles on page???

         code
        Nirvana is Now or Never