.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.28) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "Mail::Box::Tie::HASH 3pm" .TH Mail::Box::Tie::HASH 3pm "2014-08-24" "perl v5.20.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Mail::Box::Tie::HASH \- access an existing message folder as a hash .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& tie my(%inbox), \*(AqMail::Box::Tie::HASH\*(Aq, $folder; \& \& foreach my $msgid (keys %inbox) \& { print $inbox{$msgid}; \& delete $inbox{$msgid}; \& } \& \& $inbox{$msg\->messageId} = $msg; .Ve .SH "DESCRIPTION" .IX Header "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. .PP 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. .PP This implementation uses basic folder access routines which are related to the message-id. .SH "METHODS" .IX Header "METHODS" .SS "Constructors" .IX Subsection "Constructors" .IP "\fB\s-1TIEHASH\s0\fR('Mail::Box::Tie::HASH', \s-1FOLDER\s0)" 4 .IX Item "TIEHASH('Mail::Box::Tie::HASH', FOLDER)" Connects the \s-1FOLDER\s0 object to a \s-1HASH.\s0 .Sp example: .Sp .Vb 3 \& my $mgr = Mail::Box::Manager\->new; \& my $folder = $mgr\->open(access => \*(Aqrw\*(Aq); \& tie my(%inbox), \*(AqMail::Box::Tie::HASH\*(Aq, $folder; .Ve .SS "Tied Interface" .IX Subsection "Tied Interface" .ie n .IP "$obj\->\fB\s-1CLEAR\s0\fR()" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1CLEAR\s0\fR()" 4 .IX Item "$obj->CLEAR()" Remove the contents of the hash. This is not really possible, but all the messages will be flagged for deletion. .Sp example: .Sp .Vb 2 \& %inbox = (); \& %inbox = ($msg\->messageId, $msg); #before adding msg .Ve .ie n .IP "$obj\->\fB\s-1DELETE\s0\fR($message_id)" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1DELETE\s0\fR($message_id)" 4 .IX Item "$obj->DELETE($message_id)" Remove the message with the specified \f(CW$message_id\fR. .Sp example: .Sp .Vb 1 \& delete $inbox{$msgid}; .Ve .ie n .IP "$obj\->\fB\s-1EXISTS\s0\fR($message_id)" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1EXISTS\s0\fR($message_id)" 4 .IX Item "$obj->EXISTS($message_id)" Check whether a message with a certain \f(CW$message_id\fR exists. .Sp example: .Sp .Vb 1 \& if(exists $inbox{$msgid}) ... .Ve .ie n .IP "$obj\->\fB\s-1FETCH\s0\fR($message_id)" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1FETCH\s0\fR($message_id)" 4 .IX Item "$obj->FETCH($message_id)" Get the message with the specified id. The returned message may be a dummy if message thread detection is used. Returns \f(CW\*(C`undef\*(C'\fR when there is no message with the specified id. .Sp example: .Sp .Vb 2 \& my $msg = $inbox{$msgid}; \& if($inbox{$msgid}\->isDummy) ... .Ve .ie n .IP "$obj\->\fB\s-1FIRSTKEY\s0\fR()" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1FIRSTKEY\s0\fR()" 4 .IX Item "$obj->FIRSTKEY()" See \s-1\fINEXTKEY\s0()\fR. .ie n .IP "$obj\->\fB\s-1NEXTKEY\s0\fR($previous)" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1NEXTKEY\s0\fR($previous)" 4 .IX Item "$obj->NEXTKEY($previous)" \&\s-1\fIFIRSTKEY\s0()\fR returns the first message\-id/message pair from the folder, and \s-1NEXTKEY\s0 returns the message\-id/message pair for the next message, in the order in which the message is stored in the folder. .Sp Messages flagged for deletion will \fBnot\fR be returned. See the \&\fIMail::Box::messages()\fR method of the folder type for more information about the folder message order. .Sp example: .Sp .Vb 2 \& foreach my $msgid (keys %inbox) ... \& foreach my $msg (values %inbox) ... \& \& while(my ($msgid, $msg) = each %inbox) { \& $msg\->print unless $msg\->isDeleted; \& } .Ve .ie n .IP "$obj\->\fB\s-1STORE\s0\fR(undef, $message)" 4 .el .IP "\f(CW$obj\fR\->\fB\s-1STORE\s0\fR(undef, \f(CW$message\fR)" 4 .IX Item "$obj->STORE(undef, $message)" Store a message in the folder. The key must be \f(CW\*(C`undef\*(C'\fR, 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 \&\f(CW\*(C`undef\*(C'\fR, therefore the string \f(CW"undef"\fR is accepted as well. .Sp The message may be converted into something which can be stored in the folder type which is at stake. The added instance is returned. .Sp example: .Sp .Vb 2 \& $inbox{ (undef) } = $msg; \& $inbox{undef} = $msg; .Ve .SH "SEE ALSO" .IX Header "SEE ALSO" This module is part of Mail-Box distribution version 2.117, built on August 24, 2014. Website: \fIhttp://perl.overmeer.net/mailbox/\fR .SH "LICENSE" .IX Header "LICENSE" Copyrights 2001\-2014 by [Mark Overmeer]. For other contributors see ChangeLog. .PP This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See \fIhttp://www.perl.com/perl/misc/Artistic.html\fR