The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Mail::Box::Tie::HASH - access an existing message folder as a hash

SYNOPSIS

 tie my(%inbox), 'Mail::Box::Tie', $folder;

 foreach my $msgid (keys %inbox)
 {   print $inbox{$msgid};
     delete $inbox{$msgid};
 }

 $inbox{$msg->messageId} = $msg;
   

DESCRIPTION

Certainly when you look at a folder as being a set of related messages based on message-id, it is logical to access the folder through a hash.

For a tied hash, the message-id is used as the key. The message-id is usually unique, but when two or more instances of the same message are in the same folder, one will be flagged for deletion and the other will be returned.

This implementation uses basic folder access routines which are related to the message-id.

METHOD INDEX

The general methods for Mail::Box::Tie::HASH objects:

      CLEAR                                FIRSTKEY
      DELETE MESSAGE-ID                    NEXTKEY
      EXISTS MESSAGE-ID                    STORE undef, MESSAGE
      FETCH MESSAGEID                      TIEHASH ...

METHODS

TIEHASH FOLDERTYPE, INIT-PARAMETERS
TIEHASH 'Mail::Box::Tie', FOLDER

Connects the folder object to a hash.

Examples:

    my $mgr    = Mail::Box::Manager->new;
    my $folder = $mgr->open(access => 'rw');
    tie my(%inbox), 'Mail::Box::Tie', $folder;
FETCH MESSAGEID

Get the message with the specified id. The returned message may be a dummy if message thread detection is used. Returns undef when there is no message with the specified id.

Examples:

    my $msg = $inbox{$msgid};
    if($inbox{$msgid}->isDummy)  ...
STORE undef, MESSAGE

Store a message in the folder. The key must be undef, because the message-id of the specified message is taken. This is shown in the first example. However, as you see, it is a bit complicated to specify undef, therefore the string "undef" is accepted as weel.

The message may be converted into something which can be stored in the folder type which is at stake. The added instance is returned.

Example:

    $inbox{ (undef) } = $msg;
    $inbox{undef} = $msg;
FIRSTKEY
NEXTKEY

FIRSTKEY returns the first message-id/message pair from the folder, and NEXTKEY returns the message-id/message pair for the next message, in the order in which the message is stored in the folder. Messages flagged for deletion WILL be returned. See the messages method of the folder type for more information about the folder message order.

Examples:

    foreach my $msgid (keys %inbox) ...
    foreach my $msg (values %inbox) ...

    while(my ($msgid, $msg) = each %inbox) {
        $msg->print unless $msg->deleted;
    }
EXISTS MESSAGE-ID

Check whether a message with a certain MESSAGE-ID exists.

Example:

    if(exists $inbox{$msgid}) ...
DELETE MESSAGE-ID

Remove the message with the specified MESSAGE-ID.

Example:

    delete $inbox{$msgid};
CLEAR

Remove the contents of the hash. This is not really possible, but all the messages will be flagged for deletion.

Example:

   %inbox = ();
   %inbox = ($msg->messageId, $msg); #before adding msg

SEE ALSO

Mail::Box-Overview

AUTHOR

Mark Overmeer (mailbox@overmeer.net). All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

VERSION

This code is beta, version 2.00_19.

Copyright (c) 2001 Mark Overmeer. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 217:

You forgot a '=back' before '=head1'