NAME

FTN::Packet::Examples - Examples of the usage of FTN::Packet

VERSION

VERSION 0.20

DESCRIPTION

Examples of using FTN::Packet, which is a Perl extension for reading or writing Fidonet Technology Networks (FTN) packets.

Example of reading an FTN packet file

This example reads an FTN packet file and then writes the contents of the messages in that packet file as text files in the directory $spool_dir/msgs.

my $inbound_dir = "$spool_dir/in";

my ($PKT, $pkt_file, $message, $msg_area, $msg_date, $msg_from, $msg_fromnode,
    $msg_to, $msg_tonode, $msg_subj, $msg_body, $msg_msgid, $msg_replyid, $msg_ctrlinfo, $i);

opendir(INBOUND, $inbound_dir);
my @pkt_files = grep(/.*\.pkt/i,readdir(INBOUND));
closedir(INBOUND);

foreach $pkt_file (sort @pkt_files) {

    &logging($log_file, $log_id, "Open packet file: $pkt_file");

    # Call the FTN::Packet read_ftn_packet function to read packet
    # gets an array of hashes back
    $message = FTN::Packet::read_ftn_packet("$inbound_dir/$pkt_file");

    &logging($log_file, $log_id, "Logging messages from packet file.");

    for $i ( 0 .. $#{$message} ) {

        &logging($log_file, $log_id, "Msg number: $i");

        &logging($log_file, $log_id, "Msg Area: ${$message}[$i]{area}");
        $msg_area = ${$message}[$i]{area};

        &logging($log_file, $log_id, "Msg Date: ${$message}[$i]{ftscdate}");
        $msg_date = ${$message}[$i]{ftscdate};

        &logging($log_file, $log_id, "Msg From: ${$message}[$i]{from}");
        $msg_from = ${$message}[$i]{from};
        $msg_fromnode = ${$message}[$i]{fromnode};

        &logging($log_file, $log_id, "Msg To:   ${$message}[$i]{to}");
        $msg_to = ${$message}[$i]{to};
        $msg_tonode = ${$message}[$i]{tonode};

        &logging($log_file, $log_id, "Msg Subj: ${$message}[$i]{subj}");
        $msg_subj = ${$message}[$i]{subj};

        $msg_body = ${$message}[$i]{body};

        $msg_msgid = ${$message}[$i]{msgid};
        $msg_replyid = ${$message}[$i]{replyid};

        $msg_ctrlinfo = ${$message}[$i]{ctrlinfo};

        # Printing the message as a text file.
        # A "page overflow" warning at the write line because this example does not take into
        # account the length of a printed line. Using something like Template::Tiny could for
        # better formated files, including text & html depending only the template file.
        open(MsgFile, ">$spool_dir/msgs/msg$i.txt") or die "Cannot open message file for writing.";
        write MsgFile;
        close MsgFile;
    }

    # Delete the packet file that was just read
    &logging($log_file, $log_id, "Deleting: $pkt_file"); 
    unlink("$inbound_dir/$pkt_file");

}

logging($log_file, $log_id, 'FTN test packet file has been read.');

return();

format MsgFile =
Date:    @<<<<<<<<<<<<<<<<<<<<
         $msg_date
From:    @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<<<
         $msg_from,                               $msg_fromnode
To:      @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<     @<<<<<<<<<<<<<<<<<<<<<<
         $msg_to,                                 $msg_tonode
Subject: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
         $msg_subj
Area:    @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
         $msg_area
--------------------------------------------------------------------------------
@*
$msg_body
--------------------------------------------------------------------------------
Msg ID:   @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$msg_msgid
Reply ID: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$msg_replyid
@*
$msg_ctrlinfo

.

}

AUTHOR

Robert James Clay, jame@rocasa.us

SEE ALSO

L<FTN::Packet>, L<FTN::Packet::ToDo>

COPYRIGHT & LICENSE

Copyright 2012 Robert James Clay, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.