in reply to Re: INSERT file contents inside a table
in thread INSERT file contents inside a table

Hi, Many thanks for the code. it really works as I expected. But I have MADE a small mistake.

Under recipients, there r many due to multiple Tos and CCs. When there r multiple recipients it Won't work.

multiple recipients display in this way.

May 5 10:39:42 SPAM sender@domain1.com amil@recipient.com , dab@recip +ient.com , jay@recipient.com , sa@recipient.com , wid@recipient.com +spam-Nnlc4bqiNeQD.gz

here's full data

__DATA__ May 3 15:58:17 SPAM sender@domain.com peter.w@recipient.com spam-Lub +_LynRmcvj.gz May 3 15:58:24 SPAM sender@domain1.com coev074@recipient1.com spam-g +SCAdAuMpiD0.gz May 3 15:59:27 BANNED sender@domain2.com nadia.meli@grecipient2.com +banned-BpF8aM7FM48B May 3 16:00:29 SPAM sender@domain.com sascha_ste@recipient.com spam- +6fFrrzUjgvug.gz May 3 16:01:48 INFECTED sender@domain3.com philipp_me@recipient.com +virus-SZLvi-VO4IIv May 4 16:02:28 SPAM sender@domain.com caro.grill@recipient3.com spam +-saYzvikxOfVL.gz May 4 16:02:45 SPAM sender@domain.com pellitter@recipient.com spam-8 +K649OHNlRQ2.gz May 4 16:03:14 SPAM sender@domain1.com anton.d@recipient.com spam-3r +pUGn3IcDnG.gz May 5 10:39:42 SPAM sender@domain1.com amil@recipient.com , dab@recip +ient.com , jay@recipient.com , sa@recipient.com , wid@recipient.com +spam-Nnlc4bqiNeQD.gz May 5 11:00:41 SPAM sender@domain.com amil@recipient.com , duminda@re +cipient.com , samindak@recipient.com , vajirak@recipient.com spam-gj +WpzbXc8o1q.gz May 6 01:07:04 SPAM sender@domain1.com amil@recipient.com , samindak@ +recipient.com spam-x-vwwUP5yfqJ.gz May 7 12:54:26 SPAM sender@domian.com amil@recipient.com spam-o6LPjf +Cnz211.gz

I can understand this below line

my $date = join ' ',@f[0..2];

I think I hv to change below code

$table .= join '',map{"<td>$_</td>"}$date,@f[3..6];

How to display @f3..6; @f3..4 is OK. @f5 is the issue. will last (Quarantined-ID) become @f6?

I am still a novice. I still can't decide how to change the code? waiting for your INPUTS?

Replies are listed 'Best First'.
Re^3: INSERT file contents inside a table
by poj (Abbot) on May 28, 2018 at 12:34 UTC

    See perldata  $#days  # the last index of array @days

    while (<DATA>){ chomp; next unless /\S/; # skip blank lines my @f = split /[ ,]+/; my $n = $#f; my $date = join ' ',@f[0..2]; my $recip = join ' , ',@f[5..$n-1]; my $id = $f[$n]; # last col my $color = ($f[3] eq 'INFECTED') ? '#ffcccc' : '#ffffff'; $table .= qq!<tr style="font-family:courier" bgcolor="$color"> <td>$date</td> <td>$f[3]</td> <td>$f[4]</td> <td>$recip</td> <td>$id</td> </tr>!; $table .= "</tr>"; }
    poj

      Thank You very much. It work as expected. Sorry for the delay since I was very busy.

      Hi Poj,

      Sorry for disturbing u. May I ask another question?

      I want to release the quarantined mail right there. I Just want to add a link to release the quarantined mail. If u have a better way, You may suggest.

      I just added below stuffs to the code. But It does NOT work.

      <td><a href=/cgi-bin/release.pl>$id</a></td>

      This release.pl works separately. But with the link I added, It does NOT work. Below is the way to release it.

      #system("sudo /usr/bin/amavisd-release spam-KvefDigP-2QR.gz system("sudo /usr/bin/amavisd-release $id

      I think this below code has a mistake somewhere. IF I can get it solved it's the easiest way. Anyway, If I click the link, It SHOULD ask an question "Are You sure to release it with YES and NO option?

      <td><a href=/cgi-bin/release.pl>$id</a></td>

      Your Ideas r welcome to solve it.

        release.pl works separately.

        Show the release.pl code that works

        I just added below stuffs to the code.But It does NOT work.

        What is the error shown in the web server log ?

        poj
Re^3: INSERT file contents inside a table
by rnewsham (Curate) on May 28, 2018 at 11:21 UTC

    A modification of my solution below would be to change the way the data is split up and put each row into a hash with an array of recipients

    my @cols = split(/[,\s]+/); my %row; $row{quarantined_id} = pop @cols; for my $key ( qw( month day time category sender ) ) { $row{$key} = shift @cols; } $row{recipients} = \@cols; push @{$data{rows}}, \%row; ... [% FOR row=rows %] <tr> <td>[% row.month %] [% row.day %] [% row.t +ime %]</td> <td>[% row.category %]</td> <td>[% row.sender %]</td> <td>[% FOR recipient=row.recipients %][% r +ecipient %]<br />[% END %]</td> <td>[% row.quarantined_id %]</td> </tr> [% END %]

    Full example

      Thank You very much for your effort. I am using poj's code. But, I saved your code. So, your great effort has NOT gone to waste. Sorry for the delay since I was very busy.