How Do I Read A Text File By Putting Its Data In A Table Using Cgi In Perl? December 27, 2023 Post a Comment The CGI to read the data from merch.txt works but how can I put this in a table? HTML File: Solution 1: Using your raw embedded HTML approach, it's not hard. But it is incredibly ugly.print <<END_OF_HTML; <html> <body> <table> <tr><th>Sku</th><th>Cust</th></tr> END_OF_HTMLfor (@orders) { my ($sku, $cust) = split /\|/; print'<tr><td>', CGI::escapeHTML($sku), '</td>', '<td>', CGI::escapeHTML($cust), '</td></tr>'; } print <<END_OF_HTML; </table> </body> </html> END_OF_HTMLCopyBut mixing raw HTML with your Perl code is a terrible idea. Please use a templating engine instead. I recommend the Template Toolkit.Here's a simple CGI program using TT to do what you need.#!/usr/bin/perluse strict; use warnings; use Template; use CGI qw[header]; my $tt = Template->new; # Best practice: three-arg open() and lexical filehandlesopenmy $ord_fh, '<', 'merch.txt'ordie $!; my @orders = <$ord_fh>; close $ord_fh; my @order_data = map { my ($sku, $cust) = split/\|/; { sku => $sku, cust => $cust } } @orders; print header; $tt->process('orders.tt', { orders => \@order_data }) or dir $tt->error; CopyAnd you'll need a template that looks something like this:<html> <head> <title>Orders</title> </head> <body> <h1>Orders</h1> <table> <tr><th>Sku</th><th>Cust</th></tr> [% FOREACH order IN orders -%] <tr><td>[% order.sku | html %]</td><td>[% order.cust | html %]</td></tr> [% END -%] </table> </body> </html> Copy Share Post a Comment for "How Do I Read A Text File By Putting Its Data In A Table Using Cgi In Perl?"