Email-Address-1.900000755000766000766 012200763437 13240 5ustar00rjbsrjbs000000000000README100644000766000766 45612200763437 14166 0ustar00rjbsrjbs000000000000Email-Address-1.900 This archive contains the distribution Email-Address, version 1.900: RFC 2822 Address Parsing and Creation This software is copyright (c) 2004 by Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Changes100644000766000766 1123312200763437 14634 0ustar00rjbsrjbs000000000000Email-Address-1.900Release history for Email-Address 1.900 2013-08-08 14:44:43 America/New_York avoid trying to stringify undef, and so avoid a warning (thanks, Alex Vandiver) 1.899 2013-08-02 10:53:19 America/New_York repackaged, pointed at new bugtracker fallback overloads are enabled, so "cmp" will now compare with string overloads... which still might not be what you expect code has been futzed with to rely on some 5.6-isms, rather than trying to be 5.005 compatible a warning has been added: calling ->parse in scalar context gets undefined behavior 1.898 2013-02-07 remove dead link 1.897 2012-12-17 skip mailboxes, rather than aborting the whole parse, when encountering non-ASCII characters (thanks, Ruslan Zakirov!) improve the behavior of escaping in phrases (thanks, Ruslan Zakirov!) 1.896 2012-07-31 documentation improvements (thanks, Glenn Fowler!) 1.895 2012-01-15 allow non-ASCII *only in phrase* 1.894 2012-01-14 note that the use of the regex vars is not a great idea 1.893 2012-01-02 reject any non-ascii content in strings 1.892 2010-09-02 revert all behavior to 1.889 1.891 2010-08-30 rework domainless address feature to work on perl5.8 (Alex Vandiver) 1.890 2010-08-22 allow domainless addresses (if requested) (thanks, Alex Vandiver) 1.889 2007-12-19 even if the phrase needed quoting, do not return quoted phrase from the phrase method 1.888 2007-04-01 rt 16320 - collapse multiple whitespaces to prevent speed problem rt 24161 - forbid backslash in dot-atom 1.887 2007-04-01 fix a test to prevent failure on 5.005 1.886 2007-03-01 fix stupid use/require bug in test 1.885 2007-02-28 do not quote the phrase if it's MIME encoded do not double quote the phrase thanks to MIYAGAWA and KEVINR for tests for the above! 1.884 2006-12-04 fix phrase-quoting behavior by always quoting the phrase, if given this fixes bug 13387; thanks, Dave Rolsky! 1.883 2006-11-25 resolve bug 23565, as_string didn't work on 5.8.0 (weird!) improve skip behavior for cache-cow.t with older Scalar::Util restore as_string issue deprecation warning if $STRINGIFY is changed 1.882 2006-11-22 fix bug 21270, do not allow changes to objects to pollute the cache packaging improvements make test suite easier to manage improve honesty of documentation (we are not complete, (yet)) 1.881 2006-11-20 Basically: fixes a case where regex never returns. resolve bug 23187 by slighly diluting the solution to 22991, which is a more marginal problem than that of 23187, in practical terms 1.880 2006-11-11 resolve bug 22991, support obs-phrase construct this creates a significant slowdown, sadly, but nothing to rival bug 16320 1.871 2006-10-12 1.870 2006-08-10 restore as_string issue deprecation warning if $STRINGIFY is changed 1.86 2006-07-21 update docs tweak regex for approximate 50% performance boost ...but bug 16320 is still true: Email::Address can be VERY slow https://rt.cpan.org/Ticket/Display.html?id=16320 1.85 2006-07-07 add disable_cache and enable_cache methods (bug 19163, thanks ADAMK) 1.80 2004-10-22 With long mal-formed comment structures, backtracking was causing parse() to "hang." This was tracked down and fixed. (Tim O'Brien reported this). 1.7 2004-10-12 $comment was initialized twice, oops. Lowered the default nested comment level from five to two, cut regex in half. 1.6 2004-10-05 Only define package variables if they haven't already been defined. 1.5 2004-10-05 Implemented the remainder of the spec for CFWS. This was intentionally left out of previous versions because it increases the size of the regex ten fold. I was surprised to learn that the slowdown was only 33%, leaving Email-Address faster than its competition by a factor of two in the benchmarks I've created (which makes them subjective, I suppose). 1.3 2004-08-15 name() was incorrectly fixing up a comment. 1.2 2004-06-02 Added original() method. Allowed access to key regexes. 1.1 2004-05-26 Initial version. LICENSE100644000766000766 4364512200763437 14362 0ustar00rjbsrjbs000000000000Email-Address-1.900This software is copyright (c) 2004 by Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Terms of the Perl programming language system itself a) the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version, or b) the "Artistic License" --- The GNU General Public License, Version 1, February 1989 --- This software is Copyright (c) 2004 by Casey West. This is free software, licensed under: The GNU General Public License, Version 1, February 1989 GNU GENERAL PUBLIC LICENSE Version 1, February 1989 Copyright (C) 1989 Free Software Foundation, Inc. 51 Franklin St, Suite 500, Boston, MA 02110-1335 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The license agreements of most software companies try to keep users at the mercy of those companies. By contrast, our General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. The General Public License applies to the Free Software Foundation's software and to any other program whose authors commit to using it. You can use it for your programs, too. When we speak of free software, we are referring to freedom, not price. Specifically, the General Public License is designed to make sure that you have the freedom to give away or sell copies of free software, that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of a such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must tell them their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any work containing the Program or a portion of it, either verbatim or with modifications. Each licensee is addressed as "you". 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this General Public License and to the absence of any warranty; and give any other recipients of the Program a copy of this General Public License along with the Program. You may charge a fee for the physical act of transferring a copy. 2. You may modify your copy or copies of the Program or any portion of it, and copy and distribute such modifications under the terms of Paragraph 1 above, provided that you also do the following: a) cause the modified files to carry prominent notices stating that you changed the files and the date of any change; and b) cause the whole of any work that you distribute or publish, that in whole or in part contains the Program or any part thereof, either with or without modifications, to be licensed at no charge to all third parties under the terms of this General Public License (except that you may choose to grant warranty protection to some or all third parties, at your option). c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the simplest and most usual way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this General Public License. d) You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. Mere aggregation of another independent work with the Program (or its derivative) on a volume of a storage or distribution medium does not bring the other work under the scope of these terms. 3. You may copy and distribute the Program (or a portion or derivative of it, under Paragraph 2) in object code or executable form under the terms of Paragraphs 1 and 2 above provided that you also do one of the following: a) accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Paragraphs 1 and 2 above; or, b) accompany it with a written offer, valid for at least three years, to give any third party free (except for a nominal charge for the cost of distribution) a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Paragraphs 1 and 2 above; or, c) accompany it with the information you received as to where the corresponding source code may be obtained. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form alone.) Source code for a work means the preferred form of the work for making modifications to it. For an executable file, complete source code means all the source code for all modules it contains; but, as a special exception, it need not include source code for modules which are standard libraries that accompany the operating system on which the executable file runs, or for standard header files or definitions files that accompany that operating system. 4. You may not copy, modify, sublicense, distribute or transfer the Program except as expressly provided under this General Public License. Any attempt otherwise to copy, modify, sublicense, distribute or transfer the Program is void, and will automatically terminate your rights to use the Program under this License. However, parties who have received copies, or rights to use copies, from you under this General Public License will not have their licenses terminated so long as such parties remain in full compliance. 5. By copying, distributing or modifying the Program (or any work based on the Program) you indicate your acceptance of this license to do so, and all its terms and conditions. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. 7. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of the license which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the license, you may choose any version ever published by the Free Software Foundation. 8. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to humanity, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19xx name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (a program to direct compilers to make passes at assemblers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice That's all there is to it! --- The Artistic License 1.0 --- This software is Copyright (c) 2004 by Casey West. This is free software, licensed under: The Artistic License 1.0 The Artistic License Preamble The intent of this document is to state the conditions under which a Package may be copied, such that the Copyright Holder maintains some semblance of artistic control over the development of the package, while giving the users of the package the right to use and distribute the Package in a more-or-less customary fashion, plus the right to make reasonable modifications. Definitions: - "Package" refers to the collection of files distributed by the Copyright Holder, and derivatives of that collection of files created through textual modification. - "Standard Version" refers to such a Package if it has not been modified, or has been modified in accordance with the wishes of the Copyright Holder. - "Copyright Holder" is whoever is named in the copyright or copyrights for the package. - "You" is you, if you're thinking about copying or distributing this Package. - "Reasonable copying fee" is whatever you can justify on the basis of media cost, duplication charges, time of people involved, and so on. (You will not be required to justify it to the Copyright Holder, but only to the computing community at large as a market that must bear the fee.) - "Freely Available" means that no fee is charged for the item itself, though there may be fees involved in handling the item. It also means that recipients of the item may redistribute it under the same conditions they received it. 1. You may make and give away verbatim copies of the source form of the Standard Version of this Package without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. 2. You may apply bug fixes, portability fixes and other modifications derived from the Public Domain or from the Copyright Holder. A Package modified in such a way shall still be considered the Standard Version. 3. You may otherwise modify your copy of this Package in any way, provided that you insert a prominent notice in each changed file stating how and when you changed that file, and provided that you do at least ONE of the following: a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or placing the modifications on a major archive site such as ftp.uu.net, or by allowing the Copyright Holder to include your modifications in the Standard Version of the Package. b) use the modified Package only within your corporation or organization. c) rename any non-standard executables so the names do not conflict with standard executables, which must also be provided, and provide a separate manual page for each non-standard executable that clearly documents how it differs from the Standard Version. d) make other distribution arrangements with the Copyright Holder. 4. You may distribute the programs of this Package in object code or executable form, provided that you do at least ONE of the following: a) distribute a Standard Version of the executables and library files, together with instructions (in the manual page or equivalent) on where to get the Standard Version. b) accompany the distribution with the machine-readable source of the Package with your modifications. c) accompany any non-standard executables with their corresponding Standard Version executables, giving the non-standard executables non-standard names, and clearly documenting the differences in manual pages (or equivalent), together with instructions on where to get the Standard Version. d) make other distribution arrangements with the Copyright Holder. 5. You may charge a reasonable copying fee for any distribution of this Package. You may charge any fee you choose for support of this Package. You may not charge a fee for this Package itself. However, you may distribute this Package in aggregate with other (possibly commercial) programs as part of a larger (possibly commercial) software distribution provided that you do not advertise this Package as a product of your own. 6. The scripts and library files supplied as input to or produced as output from the programs of this Package do not automatically fall under the copyright of this Package, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this Package. 7. C or perl subroutines supplied by you and linked into this Package shall not be considered part of this Package. 8. The name of the Copyright Holder may not be used to endorse or promote products derived from this software without specific prior written permission. 9. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End dist.ini100644000766000766 24612200763437 14747 0ustar00rjbsrjbs000000000000Email-Address-1.900name = Email-Address author = Casey West author = Ricardo SIGNES license = Perl_5 copyright_holder = Casey West copyright_year = 2004 [@RJBS] META.yml100644000766000766 1227012200763437 14614 0ustar00rjbsrjbs000000000000Email-Address-1.900--- abstract: 'RFC 2822 Address Parsing and Creation' author: - 'Casey West' - 'Ricardo SIGNES ' build_requires: Capture::Tiny: 0 Encode: 0 Encode::MIME::Header: 0 Test::More: 0.96 blib: 0 configure_requires: ExtUtils::MakeMaker: 6.30 dynamic_config: 0 generated_by: 'Dist::Zilla version 4.300036, CPAN::Meta::Converter version 2.131560' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: 1.4 name: Email-Address requires: overload: 0 strict: 0 warnings: 0 resources: bugtracker: https://github.com/rjbs/Email-Address/issues homepage: https://github.com/rjbs/Email-Address repository: https://github.com/rjbs/Email-Address.git version: 1.900 x_Dist_Zilla: perl: version: 5.019002 plugins: - class: Dist::Zilla::Plugin::Git::GatherDir name: '@RJBS/Git::GatherDir' version: 2.014 - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' version: 0.009 - class: Dist::Zilla::Plugin::CheckExtraTests name: '@RJBS/CheckExtraTests' version: 0.011 - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' version: 4.300036 - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' version: 4.300036 - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' version: 4.300036 - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' version: 4.300036 - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' version: 4.300036 - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' version: 4.300036 - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' version: 4.300036 - class: Dist::Zilla::Plugin::MakeMaker name: '@RJBS/@Filter/MakeMaker' version: 4.300036 - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' version: 4.300036 - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' version: 4.300036 - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' version: 4.300036 - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' version: 4.300036 - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' version: 4.300036 - class: Dist::Zilla::Plugin::Git::NextVersion name: '@RJBS/Git::NextVersion' version: 2.014 - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' version: 4.300036 - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' version: 4.300036 - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' version: 4.300036 - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' version: 4.300036 - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' version: 0.006 - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' version: 4.300036 - class: Dist::Zilla::Plugin::Test::Compile config: Dist::Zilla::Plugin::Test::Compile: module_finder: - ':InstallModules' script_finder: - ':ExecFiles' name: '@RJBS/Test::Compile' version: 2.014 - class: Dist::Zilla::Plugin::ReportVersions::Tiny name: '@RJBS/ReportVersions::Tiny' version: 1.09 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@RJBS/TestMoreWithSubtests' version: 4.300036 - class: Dist::Zilla::Plugin::PodWeaver name: '@RJBS/PodWeaver' version: 3.101642 - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' version: 0.30 - class: Dist::Zilla::Plugin::Git::Check name: '@RJBS/@Git/Check' version: 2.014 - class: Dist::Zilla::Plugin::Git::Commit name: '@RJBS/@Git/Commit' version: 2.014 - class: Dist::Zilla::Plugin::Git::Tag name: '@RJBS/@Git/Tag' version: 2.014 - class: Dist::Zilla::Plugin::Git::Push name: '@RJBS/@Git/Push' version: 2.014 - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: 4.300036 - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: 4.300036 - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: 4.300036 - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: 4.300036 - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: 4.300036 - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: 4.300036 zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: 4.300036 MANIFEST100644000766000766 53612200763437 14436 0ustar00rjbsrjbs000000000000Email-Address-1.900Changes LICENSE MANIFEST META.json META.yml Makefile.PL README bench/corpus.txt bench/ea-vs-ma.pl bench/too_long.pl dist.ini lib/Email/Address.pm t/00-compile.t t/000-report-versions-tiny.t t/ascii.t t/cache-cow.t t/comma-free.t t/format.t t/patterns.t t/quote-encoded.t t/quoting.t t/tests.t xt/release/changes_has_content.t xt/release/pod-syntax.t t000755000766000766 012200763437 13424 5ustar00rjbsrjbs000000000000Email-Address-1.900ascii.t100644000766000766 260012200763437 15037 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse strict; use warnings; use Test::More; use Email::Address; use Encode qw(decode); my $ascii = q{admin@mozilla.org}; my $utf_8 = q{аdmin@mozilla.org}; my $text = decode('utf-8', $utf_8, Encode::LEAVE_SRC); my $ok_mixed = qq{"$text" <$ascii>}; my $bad_mixed = qq{"$text" <$text>}; { my (@addr) = Email::Address->parse($ascii); is(@addr, 1, "an ascii address is a-ok"); # ok( $ascii =~ $Email::Address::addr_spec, "...it =~ addr_spec"); } { my (@addr) = Email::Address->parse($ok_mixed); is(@addr, 1, "a quoted non-ascii phrase is a-ok with ascii email"); } { my (@addr) = Email::Address->parse($bad_mixed); is(@addr, 0, "a quoted non-ascii phrase is not okay with non-ascii email"); } { my (@addr) = Email::Address->parse($utf_8); is(@addr, 0, "utf-8 octet address: not ok"); # ok( $utf_8 !~ $Email::Address::addr_spec, "...it !~ addr_spec"); } { my (@addr) = Email::Address->parse($text); is(@addr, 0, "unicode (decoded) address: not ok"); # ok( $text =~ $Email::Address::addr_spec, "...it !~ addr_spec"); } { my @addr = Email::Address->parse(qq{ "Not ascii phras\x{e9}" , b\x{e3}d\@user, bad\@d\x{f6}main, not.bad\@again }); is scalar @addr, 2, "correct number of good emails"; is "$addr[0]", qq{"Not ascii phras\x{e9}" }, "expected email"; is "$addr[1]", qq{not.bad\@again}, "expected email"; } done_testing; tests.t100644000766000766 10751612200763437 15165 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse Test::More; use strict; use warnings; # This is a corpus of addresses to test. Each element of @list is a pair of # input and expected output. The input is a string that will be given to # Email::Address, with "-- ATAT --" replaced with the encircled a. # # The output is a list of formatted addresses we expect to extract from the # string. my @list = ( [ '', [] ], [ '"\'\'\'advocacy-- ATAT --p.example.org \' \' \'" ', [ [ '"\'\'\'advocacy-- ATAT --p.example.org \' \' \'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'\'advocacy-- ATAT --p.example.org \' \'" ', [ [ '"\'\'advocacy-- ATAT --p.example.org \' \'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'. Jerry a\'" ', [ [ '"\'. Jerry a\'"', 'JerryPanshen-- ATAT --aol.example.aero', undef ] ] ], [ '"\'Adam Turoff\'" , advocacy-- ATAT --p.example.org', [ [ '"\'Adam Turoff\'"', 'adam.turoff-- ATAT --s.example.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Andy Lester\'" , "\'Gabor Szabo\'" , advocacy-- ATAT --p.example.org', [ [ '"\'Andy Lester\'"', 'andy-- ATAT --pet.example.com', undef ], [ '"\'Gabor Szabo\'"', 'gabor-- ATAT --trt.example.biz', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Ask Bjoern Hansen\'" , ', [ [ '"\'Ask Bjoern Hansen\'"', 'ask-- ATAT --p.example.org', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Chris Nandor\'" , "\'David E. Wheeler\'" ', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ '"\'David E. Wheeler\'"', 'David-- ATAT --whl.example.net', undef ] ] ], [ '"\'Chris Nandor\'" , "\'Elaine -HFB- Ashton\'" ', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ] ] ], [ '"\'Chris Nandor\'" , "\'Jon Orwant\'" , , , ', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ '"\'Jon Orwant\'"', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'chip-- ATAT --valinux.com', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Chris Nandor\'" , , ', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'perl5-porters-- ATAT --p.example.org', undef ] ] ], [ '"\'Chris Nandor\'" , advocacy-- ATAT --p.example.org', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Chris Nandor\'" , advocacy-- ATAT --p.example.org, perl5-porters-- ATAT --p.example.org', [ [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'perl5-porters-- ATAT --p.example.org', undef ] ] ], [ '"\'David H. Adler \'" , "\'advocacy-- ATAT --p.example.org \'" ', [ [ '"\'David H. Adler \'"', 'dha-- ATAT --panix.com', undef ], [ '"\'advocacy-- ATAT --p.example.org \'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Doucette, Bob\'" , \'Rich Bowen\' ', [ [ '"\'Doucette, Bob\'"', 'BDoucette-- ATAT --tesent.com', undef ], [ '\'Rich Bowen\'', 'rbowen-- ATAT --rc.example.com', undef ] ] ], [ '"\'Elaine -HFB- Ashton \'" , "Turoff, Adam" ', [ [ '"\'Elaine -HFB- Ashton \'"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Turoff, Adam"', 'adam.turoff-- ATAT --s.example.net', undef ] ] ], [ '"\'Elaine -HFB- Ashton\'" ', [ [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ] ] ], [ '"\'Elaine -HFB- Ashton\'" , "\'Larry Wall\'" ', [ [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"\'Larry Wall\'"', 'larry-- ATAT --wall.org', undef ] ] ], [ '"\'Elaine -HFB- Ashton\'" , "\'Larry Wall\'" , "\'Jon Orwant\'" , , , ', [ [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"\'Larry Wall\'"', 'larry-- ATAT --wall.org', undef ], [ '"\'Jon Orwant\'"', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'chip-- ATAT --valinux.com', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Elaine -HFB- Ashton\'" , "\'Larry Wall\'" , "\'Jon Orwant\'" , , , ', [ [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"\'Larry Wall\'"', 'larry-- ATAT --wall.org', undef ], [ '"\'Jon Orwant\'"', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'chip-- ATAT --valinux.com', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Elaine -HFB- Ashton\'" , ', [ [ '"\'Elaine -HFB- Ashton\'"', 'elaine-- ATAT --chaos.example.edu', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'John Porter\'" , "\'advocacy-- ATAT --p.example.org\'" ', [ [ '"\'John Porter\'"', 'jdporter-- ATAT --min.net', undef ], [ '"\'advocacy-- ATAT --p.example.org\'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Larry Wall\'" , "\'Jon Orwant\'" , , , ', [ [ '"\'Larry Wall\'"', 'larry-- ATAT --wall.org', undef ], [ '"\'Jon Orwant\'"', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'chip-- ATAT --valinux.com', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Madeline Schnapp \'" , "\'advocacy-- ATAT --p.example.org \'" ', [ [ '"\'Madeline Schnapp \'"', 'madeline-- ATAT --oreilly.com', undef ], [ '"\'advocacy-- ATAT --p.example.org \'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Mark Mielke\'" ', [ [ '"\'Mark Mielke\'"', 'markm-- ATAT --nortelnetworks.com', undef ] ] ], [ '"\'Pamela Carter\'" , ', [ [ '"\'Pamela Carter\'"', 'pcarter150-- ATAT --comcast.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'Shlomi Fish\'" ', [ [ '"\'Shlomi Fish\'"', 'shlomif-- ATAT --vipe.technion.ac.il', undef ] ] ], [ '"\'Steve Lane\'" , "\'Chris Nandor\'" , advocacy-- ATAT --p.example.org, perl5-porters-- ATAT --p.example.org', [ [ '"\'Steve Lane\'"', 'sml-- ATAT --zfx.com', undef ], [ '"\'Chris Nandor\'"', 'pudge-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'perl5-porters-- ATAT --p.example.org', undef ] ] ], [ '"\'Tom Christiansen\'" , Horsley Tom , "\'Steve Lane\'" , advocacy-- ATAT --p.example.org, perl5-porters-- ATAT --p.example.org', [ [ '"\'Tom Christiansen\'"', 'tchrist-- ATAT --chthon.perl.com', undef ], [ 'Horsley Tom', 'Tom.Horsley-- ATAT --ccur.com', undef ], [ '"\'Steve Lane\'"', 'sml-- ATAT --zfx.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'perl5-porters-- ATAT --p.example.org', undef ] ] ], [ '"\'abigail-- ATAT --foad.example.biz\'" , "Michael R. Wolf"', [ [ '"\'abigail-- ATAT --foad.example.biz\'"', 'abigail-- ATAT --foad.example.biz', undef ], [ '"Michael R. Wolf"', 'MichaelRunningWolf-- ATAT --att.net', undef ] ] ], [ '"\'abigail-- ATAT --foad.example.biz\'" , Michael G Schwern ', [ [ '"\'abigail-- ATAT --foad.example.biz\'"', 'abigail-- ATAT --foad.example.biz', undef ], [ 'Michael G Schwern', 'schwern-- ATAT --x.example.com', undef ] ] ], [ '"\'abigail-- ATAT --foad.example.biz\'" , Michael G Schwern , Nicholas Clark , Piers Cawley , advocacy-- ATAT --p.example.org', [ [ '"\'abigail-- ATAT --foad.example.biz\'"', 'abigail-- ATAT --foad.example.biz', undef ], [ 'Michael G Schwern', 'schwern-- ATAT --x.example.com', undef ], [ 'Nicholas Clark', 'nick-- ATAT --c.example.org', undef ], [ 'Piers Cawley', 'pdcawley-- ATAT --bofh.org.uk', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'advocacy-- ATAT --p.example.org \'" ', [ [ '"\'advocacy-- ATAT --p.example.org \'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'advocacy-- ATAT --p.example.org \'" , "Turoff, Adam" ', [ [ '"\'advocacy-- ATAT --p.example.org \'"', 'advocacy-- ATAT --p.example.org', undef ], [ '"Turoff, Adam"', 'adam.turoff-- ATAT --s.example.net', undef ] ] ], [ '"\'advocacy-- ATAT --p.example.org\'" ', [ [ '"\'advocacy-- ATAT --p.example.org\'"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'bwarnock-- ATAT --capita.com\'" , advocacy-- ATAT --p.example.org', [ [ '"\'bwarnock-- ATAT --capita.com\'"', 'bwarnock-- ATAT --capita.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"\'duff-- ATAT --x.example.com\'" ', [ [ '"\'duff-- ATAT --x.example.com\'"', 'duff-- ATAT --x.example.com', undef ] ] ], [ '"\'london-list-- ATAT --happyfunball.pm.org\'" ', [ [ '"\'london-list-- ATAT --happyfunball.pm.org\'"', 'london-list-- ATAT --happyfunball.pm.org', undef ] ] ], [ '"\'perl-hackers-- ATAT --stlouis.pm.org\'" ', [ [ '"\'perl-hackers-- ATAT --stlouis.pm.org\'"', 'perl-hackers-- ATAT --stlouis.pm.org', undef ] ] ], [ '"\'perl-hackers-- ATAT --stlouis.pm.org\'" , advocacy-- ATAT --p.example.org, marsneedswomen-- ATAT --happyfunball.pm.org', [ [ '"\'perl-hackers-- ATAT --stlouis.pm.org\'"', 'perl-hackers-- ATAT --stlouis.pm.org', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'marsneedswomen-- ATAT --happyfunball.pm.org', undef ] ] ], [ '"" ', [ [ 'advocacy', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Adam Turoff" , "Elaine -HFB- Ashton" ', [ [ '"Adam Turoff"', 'adam.turoff-- ATAT --s.example.net', undef ], [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ] ] ], [ '"Adam Turoff" , "Elaine -HFB- Ashton" , "Brent Michalski" , "Madeline Schnapp" , , ', [ [ '"Adam Turoff"', 'adam.turoff-- ATAT --s.example.net', undef ], [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Brent Michalski"', 'brent-- ATAT --perlguy.net', undef ], [ '"Madeline Schnapp"', 'madeline-- ATAT --oreilly.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'betsy-- ATAT --oreilly.com', undef ] ] ], [ '"Adam Turoff" , "Paul Prescod" ', [ [ '"Adam Turoff"', 'adam.turoff-- ATAT --s.example.net', undef ], [ '"Paul Prescod"', 'paul-- ATAT --co.example.va', undef ] ] ], [ '"Alan Olsen" , "Rich Bowen" ', [ [ '"Alan Olsen"', 'alan-- ATAT --svr.example.museum', undef ], [ '"Rich Bowen"', 'rbowen-- ATAT --rc.example.com', undef ] ] ], [ '"Andreas J. Koenig" ', [ [ '"Andreas J. Koenig"', 'andreas.koenig-- ATAT --example.net', undef ] ] ], [ '"Andreas J. Koenig" , advocacy-- ATAT --p.example.org', [ [ '"Andreas J. Koenig"', 'andreas.koenig-- ATAT --example.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Andreas J. Koenig" , advocacy-- ATAT --p.example.org, regn-- ATAT --ExamPle.com', [ [ '"Andreas J. Koenig"', 'andreas.koenig-- ATAT --example.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'regn-- ATAT --ExamPle.com', undef ] ] ], [ '"Andy Wardley" ', [ [ '"Andy Wardley"', 'abw-- ATAT --cre.canon.co.uk', undef ] ] ], [ '"Bas A. Schulte" ', [ [ '"Bas A. Schulte"', 'bschulte-- ATAT --zeelandnet.nl', undef ] ] ], [ '"Bas A.Schulte" ', [ [ '"Bas A.Schulte"', 'bschulte-- ATAT --zeelandnet.nl', undef ] ] ], [ '"Betsy Waliszewski" , "perl-advocacy" ', [ [ '"Betsy Waliszewski"', 'betsy-- ATAT --oreilly.com', undef ], [ '"perl-advocacy"', 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Bradley M. Kuhn" ', [ [ '"Bradley M. Kuhn"', 'bkuhn-- ATAT --ebb.org', undef ] ] ], [ '"Brammer, Phil" ', [ [ '"Brammer, Phil"', 'PBRA01-- ATAT --CONAGRAFROZEN.COM', undef ] ] ], [ '"Brent Michalski" , "Madeline Schnapp" , , ', [ [ '"Brent Michalski"', 'brent-- ATAT --perlguy.net', undef ], [ '"Madeline Schnapp"', 'madeline-- ATAT --oreilly.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'betsy-- ATAT --oreilly.com', undef ] ] ], [ '"Brian Wilson" ', [ [ '"Brian Wilson"', 'bwilson-- ATAT --songline.com', undef ] ] ], [ '"Calvin Lee" , ', [ [ '"Calvin Lee"', 'bodyshock911-- ATAT --hotmail.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Calvin Lee" , advocacy-- ATAT --p.example.org', [ [ '"Calvin Lee"', 'bodyshock911-- ATAT --hotmail.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Chip Salzenberg" ', [ [ '"Chip Salzenberg"', 'chip-- ATAT --valinux.com', undef ] ] ], [ '"Chip Salzenberg" , "Elaine -HFB- Ashton" ', [ [ '"Chip Salzenberg"', 'chip-- ATAT --valinux.com', undef ], [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ] ] ], [ '"Chris Devers" , "Uri Guttman" ', [ [ '"Chris Devers"', 'cdevers-- ATAT --boston.com', undef ], [ '"Uri Guttman"', 'uri-- ATAT --stemsystems.com', undef ] ] ], [ '"Chris Nandor" ', [ [ '"Chris Nandor"', 'pudge-- ATAT --x.example.com', undef ] ] ], [ '"Chris Nandor" , "Nathan Torkington" , "Peter Scott" ', [ [ '"Chris Nandor"', 'pudge-- ATAT --x.example.com', undef ], [ '"Nathan Torkington"', 'gnat-- ATAT --frii.com', undef ], [ '"Peter Scott"', 'Peter-- ATAT --PSDT.com', undef ] ] ], [ '"Chris Nandor" , "Nathan Torkington" , , "Peter Scott" ', [ [ '"Chris Nandor"', 'pudge-- ATAT --x.example.com', undef ], [ '"Nathan Torkington"', 'gnat-- ATAT --frii.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ '"Peter Scott"', 'Peter-- ATAT --PSDT.com', undef ] ] ], [ '"Clinton A. Pierce" ', [ [ '"Clinton A. Pierce"', 'clintp-- ATAT --geeksalad.org', undef ] ] ], [ '"Clinton A. Pierce" , madeline-- ATAT --oreilly.com, pudge-- ATAT --x.example.com, advocacy-- ATAT --p.example.org', [ [ '"Clinton A. Pierce"', 'clintp-- ATAT --geeksalad.org', undef ], [ undef, 'madeline-- ATAT --oreilly.com', undef ], [ undef, 'pudge-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Curtis Poe" , ', [ [ '"Curtis Poe"', 'cp-- ATAT --onsitetech.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Curtis Poe" , advocacy-- ATAT --p.example.org', [ [ '"Curtis Poe"', 'cp-- ATAT --onsitetech.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Dave Cross" ', [ [ '"Dave Cross"', 'dave-- ATAT --dave.org.uk', undef ] ] ], [ '"David E. Wheeler" ', [ [ '"David E. Wheeler"', 'David-- ATAT --Wheeler.net', undef ] ] ], [ '"David E. Wheeler" , "\'Larry Wall\'" , "\'Jon Orwant\'" , chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --p.example.org', [ [ '"David E. Wheeler"', 'David-- ATAT --Wheeler.net', undef ], [ '"\'Larry Wall\'"', 'larry-- ATAT --wall.org', undef ], [ '"\'Jon Orwant\'"', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'chip-- ATAT --valinux.com', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"David E. Wheeler" , \'Elaine -HFB- Ashton\' , \'Larry Wall\' , \'Jon Orwant\' , tidbit-- ATAT --sri.net, advocacy-- ATAT --p.example.org', [ [ '"David E. Wheeler"', 'David-- ATAT --Wheeler.net', undef ], [ '\'Elaine -HFB- Ashton\'', 'elaine-- ATAT --chaos.example.edu', undef ], [ '\'Larry Wall\'', 'larry-- ATAT --wall.org', undef ], [ '\'Jon Orwant\'', 'orwant-- ATAT --media.mit.edu', undef ], [ undef, 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"David Grove" ', [ [ '"David Grove"', 'pete-- ATAT --petes-place.com', undef ] ] ], [ '"David Grove" , ', [ [ '"David Grove"', 'pete-- ATAT --petes-place.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"David H. Adler" ', [ [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ] ] ], [ '"David H. Adler" , , ', [ [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'simon-- ATAT --brecon.co.uk', undef ] ] ], [ '"David H. Adler" , advocacy-- ATAT --p.example.org', [ [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"David H. Adler" , advocacy-- ATAT --p.example.org, perl5-porters-- ATAT --p.example.org', [ [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ], [ undef, 'perl5-porters-- ATAT --p.example.org', undef ] ] ], [ '"David H. Adler" ,advocacy-- ATAT --p.example.org', [ [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Edwards, Darryl" ', [ [ '"Edwards, Darryl"', 'Darryl.Edwards-- ATAT --adc.com', undef ] ] ], [ '"Elaine -HFB- Ashton" ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ] ] ], [ '"Elaine -HFB- Ashton" , "Brent Michalski" ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Brent Michalski"', 'brent-- ATAT --perlguy.net', undef ] ] ], [ '"Elaine -HFB- Ashton" , "Frank Schmuck, CFO" ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Frank Schmuck, CFO"', 'fschmuck-- ATAT --l.example.org', undef ] ] ], [ '"Elaine -HFB- Ashton" , "Peter Scott" ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Peter Scott"', 'Peter-- ATAT --PSDT.com', undef ] ] ], [ '"Elaine -HFB- Ashton" , "Tom Christiansen" , , "David H. Adler" , ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"Tom Christiansen"', 'tchrist-- ATAT --chthon.perl.com', undef ], [ undef, 'Ben_Tilly-- ATAT --trepp.com', undef ], [ '"David H. Adler"', 'dha-- ATAT --panix.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Elaine -HFB- Ashton" , "brian d foy" , ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ '"brian d foy"', 'tidbit-- ATAT --sri.net', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Elaine -HFB- Ashton" , ', [ [ '"Elaine -HFB- Ashton"', 'elaine-- ATAT --chaos.example.edu', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Frank Schmuck, CFO" ', [ [ '"Frank Schmuck, CFO"', 'fschmuck-- ATAT --l.example.org', undef ] ] ], [ '"Frank Schmuck, CFO" , "\'abigail-- ATAT --foad.example.biz\'" , Michael G Schwern , Nicholas Clark , advocacy-- ATAT --p.example.org', [ [ '"Frank Schmuck, CFO"', 'fschmuck-- ATAT --l.example.org', undef ], [ '"\'abigail-- ATAT --foad.example.biz\'"', 'abigail-- ATAT --foad.example.biz', undef ], [ 'Michael G Schwern', 'schwern-- ATAT --x.example.com', undef ], [ 'Nicholas Clark', 'nick-- ATAT --c.example.org', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"G. Wade Johnson" ', [ [ '"G. Wade Johnson"', 'gwadej-- ATAT --normal.example.coop', undef ] ] ], [ '"Gabor Szabo" ', [ [ '"Gabor Szabo"', 'gabor-- ATAT --trt.example.biz', undef ] ] ], [ '"Greg Norris (humble visionary genius)" , ', [ [ '"Greg Norris"', 'nextrightmove-- ATAT --bang.example.net', '(humble visionary genius)' ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Greg Norris \\(humble visionary genius\\)" ', [ [ '"Greg Norris \\(humble visionary genius\\)"', 'nextrightmove-- ATAT --bang.example.net', undef ] ] ], [ '"Greg Norris humble visionary genius\\"" ', [ [ '"Greg Norris humble visionary genius\\""', 'nextrightmove-- ATAT --bang.example.net', undef ] ] ], [ '"Helton, Brandon" , perl6-language-- ATAT --p.example.org, advocacy-- ATAT --p.example.org', [ [ '"Helton, Brandon"', 'bhelton-- ATAT --h.h.example.com', undef ], [ undef, 'perl6-language-- ATAT --p.example.org', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ '"Jan Dubois" ', [ [ '"Jan Dubois"', 'jand-- ATAT --ExamPle.com', undef ] ] ], [ '"Jason W. May" ', [ [ '"Jason W. May"', 'jasonmay-- ATAT --example.name', undef ] ] ], [ '"Jason W. May" ', [ [ '"Jason W. May"', 'jmay-- ATAT --x.example.com', undef ] ] ], [ '"Jason W. May" , ', [ [ '"Jason W. May"', 'jmay-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ 'Jason W. May ', [ [ 'Jason W. May', 'jmay-- ATAT --x.example.com', undef ] ] ], [ '"Jason W. May" , advocacy-- ATAT --p.example.org', [ [ '"Jason W. May"', 'jmay-- ATAT --x.example.com', undef ], [ undef, 'advocacy-- ATAT --p.example.org', undef ] ] ], [ 'admin+=E6=96=B0=E5=8A=A0=E5=9D=A1_Weblog@test.sxt.example.info', [ [ undef, 'admin+=E6=96=B0=E5=8A=A0=E5=9D=A1_Weblog-- ATAT --test.sxt.example.info', undef, ], ], ] ); my $tests = 1; $tests += @{ $_->[1] } * 5 for @list; plan tests => $tests; use_ok 'Email::Address'; for (@list) { $_->[0] =~ s/-- ATAT --/@/g; my @addrs = Email::Address->parse($_->[0]); my @tests = map { Email::Address->new(map { $_ ? do {s/-- ATAT --/@/g; $_} : $_ } @$_) } @{$_->[1]}; foreach (@addrs) { isa_ok($_, 'Email::Address'); my $test = shift @tests; is($_->format, $test->format, "format: " . $test->format); is($_->as_string, $test->format, "format: " . $test->format); is("$_", $test->format, "stringify: $_"); is($_->name, $test->name, "name: " . $test->name); } } META.json100644000766000766 2016412200763437 14765 0ustar00rjbsrjbs000000000000Email-Address-1.900{ "abstract" : "RFC 2822 Address Parsing and Creation", "author" : [ "Casey West", "Ricardo SIGNES " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 4.300036, CPAN::Meta::Converter version 2.131560", "license" : [ "perl_5" ], "meta-spec" : { "url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec", "version" : "2" }, "name" : "Email-Address", "prereqs" : { "configure" : { "requires" : { "ExtUtils::MakeMaker" : "6.30" } }, "develop" : { "requires" : { "Test::Pod" : "1.41", "version" : "0.9901" } }, "runtime" : { "requires" : { "overload" : "0", "strict" : "0", "warnings" : "0" } }, "test" : { "requires" : { "Capture::Tiny" : "0", "Encode" : "0", "Encode::MIME::Header" : "0", "Test::More" : "0.96", "blib" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/rjbs/Email-Address/issues" }, "homepage" : "https://github.com/rjbs/Email-Address", "repository" : { "type" : "git", "url" : "https://github.com/rjbs/Email-Address.git", "web" : "https://github.com/rjbs/Email-Address" } }, "version" : "1.900", "x_Dist_Zilla" : { "perl" : { "version" : "5.019002" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "name" : "@RJBS/Git::GatherDir", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@RJBS/CheckPrereqsIndexed", "version" : "0.009" }, { "class" : "Dist::Zilla::Plugin::CheckExtraTests", "name" : "@RJBS/CheckExtraTests", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "name" : "@RJBS/@Filter/MakeMaker", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "name" : "@RJBS/Git::NextVersion", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", "version" : "0.006" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::Test::Compile", "config" : { "Dist::Zilla::Plugin::Test::Compile" : { "module_finder" : [ ":InstallModules" ], "script_finder" : [ ":ExecFiles" ] } }, "name" : "@RJBS/Test::Compile", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::ReportVersions::Tiny", "name" : "@RJBS/ReportVersions::Tiny", "version" : "1.09" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@RJBS/TestMoreWithSubtests", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "name" : "@RJBS/PodWeaver", "version" : "3.101642" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", "version" : "0.30" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "name" : "@RJBS/@Git/Check", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "name" : "@RJBS/@Git/Commit", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "name" : "@RJBS/@Git/Tag", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "name" : "@RJBS/@Git/Push", "version" : "2.014" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "4.300036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "4.300036" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : "0" }, "version" : "4.300036" } } } format.t100644000766000766 135012200763437 15240 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse Test::More; use strict; $^W = 1; use Email::Address; my @tests = ( [ [ undef, 'simple@example.com', undef ], 'simple@example.com', ], [ [ 'John Doe', 'johndoe@example.com', undef ], q{"John Doe" }, ], [ [ q{Name With " Quote}, 'nwq@example.com', undef ], q{"Name With \\" Quote" }, ], [ [ q{"Name Surrounded With Quotes"}, 'foobar@example.com', undef ], q{"Name Surrounded With Quotes" }, ], ); plan tests => scalar @tests; for (@tests) { my $addr = Email::Address->new( @{ $_->[0] } ); is( $addr->format, $_->[1], "format: $_->[1]" ); } quoting.t100644000766000766 201212200763437 15432 0ustar00rjbsrjbs000000000000Email-Address-1.900/t#!perl use strict; use Email::Address; use Test::More tests => 8; my $phrase = q{jack!work}; my $email = 'jack@work.com'; my $ea = Email::Address->new($phrase, $email); is( $ea->format, q{"jack!work" }, 'we automatically quote a phrase with ! in it', ); is($ea->phrase, $phrase, "the phrase method returns the right thing"); my ($ea2) = Email::Address->parse($ea->format); is( $ea2->format, q{"jack!work" }, 'round trip format the previously parsed email', ); is($ea2->phrase, $phrase, "the phrase method returns the right thing"); my ($ea3) = Email::Address->parse(q{jack!work }); is( $ea3->format, q{"jack!work" }, 'given an email with an unquoted !, we quote when formatting', ); is($ea3->phrase, $phrase, "the phrase method returns the right thing"); { my $ea = Email::Address->new(q{jack "\\" robinson}, 'jack@work.com'); is $ea->phrase, q{jack "\\" robinson}; is $ea->format, q{"jack \\"\\\\\\" robinson" }; } Makefile.PL100644000766000766 302112200763437 15267 0ustar00rjbsrjbs000000000000Email-Address-1.900 use strict; use warnings; use ExtUtils::MakeMaker 6.30; my %WriteMakefileArgs = ( "ABSTRACT" => "RFC 2822 Address Parsing and Creation", "AUTHOR" => "Casey West, Ricardo SIGNES ", "BUILD_REQUIRES" => {}, "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.30" }, "DISTNAME" => "Email-Address", "EXE_FILES" => [], "LICENSE" => "perl", "NAME" => "Email::Address", "PREREQ_PM" => { "overload" => "0", "strict" => "0", "warnings" => "0" }, "TEST_REQUIRES" => { "Capture::Tiny" => "0", "Encode" => "0", "Encode::MIME::Header" => "0", "Test::More" => "0.96", "blib" => "0" }, "VERSION" => "1.900", "test" => { "TESTS" => "t/*.t" } ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { my $tr = delete $WriteMakefileArgs{TEST_REQUIRES}; my $br = $WriteMakefileArgs{BUILD_REQUIRES}; for my $mod ( keys %$tr ) { if ( exists $br->{$mod} ) { $br->{$mod} = $tr->{$mod} if $tr->{$mod} > $br->{$mod}; } else { $br->{$mod} = $tr->{$mod}; } } } unless ( eval { ExtUtils::MakeMaker->VERSION(6.56) } ) { my $br = delete $WriteMakefileArgs{BUILD_REQUIRES}; my $pp = $WriteMakefileArgs{PREREQ_PM}; for my $mod ( keys %$br ) { if ( exists $pp->{$mod} ) { $pp->{$mod} = $br->{$mod} if $br->{$mod} > $pp->{$mod}; } else { $pp->{$mod} = $br->{$mod}; } } } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); patterns.t100644000766000766 371312200763437 15615 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse Test::More; use strict; use warnings FATAL => 'all'; =for comment $Email::Address::addr_spec This regular expression defined what an email address is allowed to look like. $Email::Address::angle_addr This regular expression defines an $addr_spec wrapped in angle brackets. $Email::Address::name_addr This regular expression defines what an email address can look like with an optional preceeding display name, also known as the "phrase". $Email::Address::mailbox This is the complete regular expression defining an RFC 2822 emial address with an optional preceeding display name and optional following comment. =cut # tests (string, truth value) my %tests = ( mailbox => [ [qw( foo 0 )], [qw( foo@bar.com 1 )], [qw( bob@test.com.au 1 )], [qw( foo.bob@test.com.au 1 )], [qw( foo-bob@test-com.au 1 )], [qw( foo-bob@test.uk 1 )], [ 'Richard Sonnen ', 1 ], [ '', 1 ], [ '"Richard Sonnen" ', 1 ], [ '"Richard Sonnen" (comments)', 1 ], [ '', 0 ], [ 'foo', 0 ], [ 'foo bar@bar.com', 0 ], [ '@bar.com', 0 ], ], ); my $num_tests = scalar( map @{$_}, values %tests ); plan tests => $num_tests + 1; use_ok 'Email::Address'; my %pats = map { my $pat; eval '$pat = $Email::Address::'.$_; ($_ => $pat); } qw( addr_spec angle_addr name_addr mailbox ); for my $pattern_name (keys %tests) { for my $test (@{ $tests{$pattern_name} }) { my ($string, $expect_bool) = @{$test}; my $result = $string =~ /^$pats{$pattern_name}$/; ok( $expect_bool ? $result : !$result , "pat $pattern_name: $string" ); } } cache-cow.t100644000766000766 232212200763437 15601 0ustar00rjbsrjbs000000000000Email-Address-1.900/t use strict; use Test::More; my $have_scalar_util = 0; if (eval "use Scalar::Util 1.09 (); 1") { $have_scalar_util = 1; plan tests => 8; } else { plan tests => 6; } use_ok('Email::Address'); # We want to copy-on-write if we've got an object that is referenced by a # cache. If we don't... bad things happen. my $ORIGINAL = 'original@example.com'; my $UPDATED = 'updated@example.com'; my $orig_refaddr; { my ($addr) = Email::Address->parse($ORIGINAL); isa_ok($addr, 'Email::Address'); $orig_refaddr = Scalar::Util::refaddr($addr) if $have_scalar_util; is($addr->address, $ORIGINAL, "address is parsed in properly"); $addr->address($UPDATED); is($addr->address, $UPDATED, "the address udpated properly"); } my ($addr) = Email::Address->parse($ORIGINAL); if ($have_scalar_util) { isnt( Scalar::Util::refaddr($addr), $orig_refaddr, "the new copy isn't the same refaddr as we had previously", ); } isa_ok($addr, 'Email::Address'); is($addr->address, $ORIGINAL, "address is parsed in properly"); if ($have_scalar_util) { my ($addr2) = Email::Address->parse($ORIGINAL); is( Scalar::Util::refaddr($addr), Scalar::Util::refaddr($addr2), "we still get a cached copy", ); } comma-free.t100644000766000766 30712200763437 15744 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse strict; use Test::More 0.88; use Email::Address; my @addrs = Email::Address->parse(q{a@example.com b@example.com}); is(@addrs, 2, "we parse comma-free lists, for some reason"); done_testing; 00-compile.t100644000766000766 113012200763437 15611 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse strict; use warnings; # This test was generated via Dist::Zilla::Plugin::Test::Compile 2.014 use Test::More 0.88; use Capture::Tiny qw{ capture }; my @module_files = qw( Email/Address.pm ); my @scripts = qw( ); # no fake home requested my @warnings; for my $lib (@module_files) { my ($stdout, $stderr, $exit) = capture { system($^X, '-Mblib', '-e', qq{require qq[$lib]}); }; is($?, 0, "$lib loaded ok"); warn $stderr if $stderr; push @warnings, $stderr if $stderr; } is(scalar(@warnings), 0, 'no warnings found') if $ENV{AUTHOR_TESTING}; done_testing; bench000755000766000766 012200763437 14240 5ustar00rjbsrjbs000000000000Email-Address-1.900corpus.txt100644000766000766 20347012200763437 16522 0ustar00rjbsrjbs000000000000Email-Address-1.900/bench "'''advocacy-- ATAT --perl.org ' ' '" "''advocacy-- ATAT --perl.org ' '" "'. Jerry a'" "'Adam Turoff'" , advocacy-- ATAT --perl.org "'Andy Lester'" , "'Gabor Szabo'" , advocacy-- ATAT --perl.org "'Ask Bjoern Hansen'" , "'Chris Nandor'" , "'David E. Wheeler'" "'Chris Nandor'" , "'Elaine -HFB- Ashton'" "'Chris Nandor'" , "'Jon Orwant'" , , , "'Chris Nandor'" , , "'Chris Nandor'" , advocacy-- ATAT --perl.org "'Chris Nandor'" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org "'David H. Adler '" , "'advocacy-- ATAT --perl.org '" "'Doucette, Bob'" , 'Rich Bowen' "'Elaine -HFB- Ashton '" , "Turoff, Adam" "'Elaine -HFB- Ashton'" "'Elaine -HFB- Ashton'" , "'Larry Wall'" "'Elaine -HFB- Ashton'" , "'Larry Wall'" , "'Jon Orwant'" , , , "'Elaine -HFB- Ashton'" , "'Larry Wall'" , "'Jon Orwant'" , , , "'Elaine -HFB- Ashton'" , "'John Porter'" , "'advocacy-- ATAT --perl.org'" "'Larry Wall'" , "'Jon Orwant'" , , , "'Madeline Schnapp '" , "'advocacy-- ATAT --perl.org '" "'Mark Mielke'" "'Pamela Carter'" , "'Shlomi Fish'" "'Steve Lane'" , "'Chris Nandor'" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org "'Tom Christiansen'" , Horsley Tom , "'Steve Lane'" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org "'abigail-- ATAT --foad.org'" , "Michael R. Wolf" "'abigail-- ATAT --foad.org'" , Michael G Schwern "'abigail-- ATAT --foad.org'" , Michael G Schwern , Nicholas Clark , Piers Cawley , advocacy-- ATAT --perl.org "'advocacy-- ATAT --perl.org '" "'advocacy-- ATAT --perl.org '" , "Turoff, Adam" "'advocacy-- ATAT --perl.org'" "'bwarnock-- ATAT --capita.com'" , advocacy-- ATAT --perl.org "'duff-- ATAT --pobox.com'" "'london-list-- ATAT --happyfunball.pm.org'" "'perl-hackers-- ATAT --stlouis.pm.org'" "'perl-hackers-- ATAT --stlouis.pm.org'" , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org "" "Adam Turoff" , "Elaine -HFB- Ashton" "Adam Turoff" , "Elaine -HFB- Ashton" , "Brent Michalski" , "Madeline Schnapp" , , "Adam Turoff" , "Paul Prescod" "Alan Olsen" , "Rich Bowen" "Andreas J. Koenig" "Andreas J. Koenig" , advocacy-- ATAT --perl.org "Andreas J. Koenig" , advocacy-- ATAT --perl.org, regn-- ATAT --ActiveState.com "Andy Wardley" "Bas A. Schulte" "Bas A.Schulte" "Betsy Waliszewski" , "perl-advocacy" "Bradley M. Kuhn" "Brammer, Phil" "Brent Michalski" , "Madeline Schnapp" , , "Brian Wilson" "Calvin Lee" , "Calvin Lee" , advocacy-- ATAT --perl.org "Chip Salzenberg" "Chip Salzenberg" , "Elaine -HFB- Ashton" "Chris Devers" , "Uri Guttman" "Chris Nandor" "Chris Nandor" , "Nathan Torkington" , "Peter Scott" "Chris Nandor" , "Nathan Torkington" , , "Peter Scott" "Clinton A. Pierce" "Clinton A. Pierce" , madeline-- ATAT --oreilly.com, pudge-- ATAT --pobox.com, advocacy-- ATAT --perl.org "Curtis Poe" , "Curtis Poe" , advocacy-- ATAT --perl.org "Dave Cross" "David E. Wheeler" "David E. Wheeler" , "'Larry Wall'" , "'Jon Orwant'" , chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org "David E. Wheeler" , 'Elaine -HFB- Ashton' , 'Larry Wall' , 'Jon Orwant' , tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org "David Grove" "David Grove" , "David H. Adler" "David H. Adler" , , "David H. Adler" , advocacy-- ATAT --perl.org "David H. Adler" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org "David H. Adler" ,advocacy-- ATAT --perl.org "Edwards, Darryl" "Elaine -HFB- Ashton" "Elaine -HFB- Ashton" , "Brent Michalski" "Elaine -HFB- Ashton" , "Frank Schmuck, CFO" "Elaine -HFB- Ashton" , "Peter Scott" "Elaine -HFB- Ashton" , "Tom Christiansen" , , "David H. Adler" , "Elaine -HFB- Ashton" , "brian d foy" , "Elaine -HFB- Ashton" , "Frank Schmuck, CFO" "Frank Schmuck, CFO" , "'abigail-- ATAT --foad.org'" , Michael G Schwern , Nicholas Clark , advocacy-- ATAT --perl.org "G. Wade Johnson" "Gabor Szabo" "Greg Norris (humble visionary genius)" , "Greg Norris \(humble visionary genius\)" "Greg Norris humble visionary genius\"" "Helton, Brandon" , perl6-language-- ATAT --perl.org, advocacy-- ATAT --perl.org "Jan Dubois" "Jason W. May" "Jason W. May" "Jason W. May" , "Jason W. May" , advocacy-- ATAT --perl.org "Jeremy D. Zawodny" "John Adams" , "John Porter" , "Chris Nandor" "John Porter" , "John Porter" , , "Vanderhoof, Tzadik" "Jonathan Stowe" , "Josh Hill" "Lori Pike" "Madeline Schnapp" , , "Matt Sergeant" , "Dan Sugalski" "Meltzer, Kevin" "Michael R. Wolf" "Michael R. Wolf" , jobs-discuss-- ATAT --perl.org, advocacy-- ATAT --perl.org, administrator-- ATAT --yetanother.org "Nathan Torkington" "Nathan Torkington" , "Chris Nandor" "Nathan Torkington" , , "Peter Scott" "Nathan Torkington" , "Kurt Starsinic" "Paul Prescod" , "Perl Advocacy List (E-mail)" "Perl Advocacy" "Peterson, Jonathan" "Peterson, Jonathan" , "'Elaine -HFB- Ashton'" , Johan Vromans "Peterson, Jonathan" , "Peterson, Jonathan" , advocacy-- ATAT --perl.org "Randal L. Schwartz" "Randal L. Schwartz" , "Randy J. Ray" , advocacy-- ATAT --perl.org "Robert" "Robert" , "Elaine -HFB- Ashton" , "Robert" , "Paul Prescod" , "Robert" , "Robert" , "Scott R. Godin" "Scott R. Godin" , advocacy-- ATAT --perl.org, dbi-users-- ATAT --perl.org "Scott T. Hildreth" "Selena Sol" "Shlomi Fish" "Simon Cozens" "Steve Lane" , "Horsley Tom" "Turoff, Adam" "Turoff, Adam" , "'Madeline Schnapp '" "Uri Guttman" , "Uri Guttman" , "Vanderhoof, Tzadik" "Vanderhoof, Tzadik" , Troy Denkinger , advocacy-- ATAT --perl.org "Vanderhoof, Tzadik" , advocacy-- ATAT --perl.org "Vanderhoof, Tzadik" "Vanderhoof, Tzadik" , "Vanderhoof, Tzadik" , advocacy-- ATAT --perl.org "W. Phillip Moore" "Wayne Haufler" "Wiggins d'Anconia" "William R. Ward" "\"\\\"Scott R. Godin\\\"\"" "advocacy-- ATAT --perl.org" "advocacy-- ATAT --perl.org" , orwant-- ATAT --oreilly.com "brian d foy" , "perl-advocacy" ''Elaine -HFB- Ashton ' ' 'Andrew Simmons' , 'perl-advocacy' 'Andy Lester' , 'Gabor Szabo' , 'Andy Lester' , Tzadik Vanderhoof 'Ask Bjoern Hansen' 'Betsy Waliszewski' , Chris Benson , advocacy-- ATAT --perl.org 'Calvin Lee' 'Chris Nandor' , Horsley Tom 'Chris Nandor' , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org 'Dave Rolsky' , "'abigail-- ATAT --foad.org'" 'Dave Rolsky' , abigail-- ATAT --foad.org 'Elaine -HFB- Ashton ' 'Elaine -HFB- Ashton' 'Elaine -HFB- Ashton' , "Frank Schmuck, CFO" 'Elaine -HFB- Ashton' , "Turoff, Adam" 'Elaine -HFB- Ashton' , Johan Vromans 'Gabor Szabo' , 'Gabor Szabo' , advocacy-- ATAT --perl.org 'John Porter' 'John Porter' , skud-- ATAT --netizen.com.au, advocacy-- ATAT --perl.org 'Madeline Schnapp ' 'Madeline Schnapp ' , "'advocacy-- ATAT --perl.org '" 'Nathan Torkington ' , "'advocacy-- ATAT --perl.org '" 'Nathan Torkington ' , 'Paul Prescod ' 'Peter Scott' , Stas Bekman , Tzadik Vanderhoof 'Rich Bowen' 'Steve Lane' , 'Chris Nandor' , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org 'Steve Lane' , Horsley Tom 'Tom Christiansen' , Horsley Tom '_brian_d_foy' , advocacy-- ATAT --perl.org 6jrwvn6d02-- ATAT --sneakemail.com (Steffen Mueller) <> , , "Tommy Butler" , "Nathan Torkington" , "Vanderhoof, Tzadik" , "_brian_d_foy" , , , , , , Nathan Torkington , , , , , , , , , , ,"Betsy Waliszewski" , "perl-advocacy" , =?ISO-8859-1?Q?Stig_Sj=F6berg_=28BCS=29?= =?iso-8859-1?Q?Fran=E7ois=20D=E9sarm=E9nien?= Abigail Abigail Abigail , Selena Sol , advocacy-- ATAT --perl.org Abigail , Sidharth Malhotra , perl-advocacy Abigail , advocacy-- ATAT --perl.org Abigail Adam Turoff Adam Turoff , Elaine -HFB- Ashton , advocacy-- ATAT --perl.org Adam Turoff , Troy Denkinger Adam Turoff , advocacy-- ATAT --perl.org Adam Turoff Adam Turoff , Christopher Masto , advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org Adam Turoff , Perl Advocacy Adam Turoff , advocacy-- ATAT --perl.org Adam Turoff , advocacy-- ATAT --perl.org, Jon Orwant Adam Turoff , marsneedswomen-- ATAT --happyfunball.pm.org Adam Turoff , marsneedswomen-- ATAT --happyfunball.pm.org, advocacy-- ATAT --perl.org, brian-- ATAT --smithrenaud.com Adam Turoff , pressio main , advocacy-- ATAT --perl.org Adam Turoff ,Abigail Ajit Deshpande Ajit Deshpande , advocacy-- ATAT --perl.org, pudge-- ATAT --pobox.com Alan Olsen Alan Olsen , Lisa Nyman , advocacy-- ATAT --perl.org Alan Olsen , advocacy-- ATAT --perl.org Andrew Mayo Andrew Simmons Andrew Sweger Andrew Sweger , Shlomi Fish , advocacy-- ATAT --perl.org Andrew.McGregor-- ATAT --amtrak.co.uk (Andrew McGregor) Andy Lester Andy Wardley Arron Hart Ask Bjoern Hansen Ask Bjoern Hansen Ask Bjoern Hansen Ask Bjoern Hansen , advocacy-- ATAT --perl.org Ask Bjoern Hansen Autarch BDoucette-- ATAT --tesent.com (Bob Doucette) Ben_Tilly-- ATAT --trepp.com Ben_Tilly-- ATAT --trepp.com (Ben Tilly) Ben_Tilly-- ATAT --trepp.com, "David H. Adler" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Ben_Tilly-- ATAT --trepp.com, pudge-- ATAT --pobox.com, advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Bernhard van Staveren Betsy Waliszewski Betsy Waliszewski , Adam Turoff Betsy Waliszewski , Adam Turoff , advocacy-- ATAT --perl.org, Jon Orwant Betsy Waliszewski , perl-advocacy Brad Murray Brad.Murray-- ATAT --tas.alcatel.ca (Brad Murray) Brad.Murray-- ATAT --tas.alcatel.ca, advocacy-- ATAT --perl.org Brand Hilton Brent Michalski Brent Michalski , Madeline Schnapp , advocacy-- ATAT --perl.org, betsy-- ATAT --oreilly.com Brent Michalski , abigail-- ATAT --foad.org Casey West Charles Barilleaux , bwarnock-- ATAT --capita.com, advocacy-- ATAT --perl.org Charles Volkstorf , advocacy-- ATAT --perl.org Chip Salzenberg Chip Salzenberg , Elaine -HFB- Ashton Chip Salzenberg , advocacy-- ATAT --perl.org Chris Chris Benson Chris Benson , advocacy-- ATAT --perl.org Chris Devers Chris Nandor Chris Nandor , Alan Olsen , Lisa Nyman , advocacy-- ATAT --perl.org Chris Nandor , Autarch Chris Nandor , Elaine -HFB- Ashton Chris Nandor , Elaine -HFB- Ashton , Sarah Burcham , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org Chris Nandor , George Rapp , advocacy-- ATAT --perl.org, pyguy-- ATAT --prescod.net Chris Nandor , Jon Orwant , chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Chris Nandor , Larry Wall , Jon Orwant , tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Chris Nandor , Paul Prescod , George Rapp , advocacy-- ATAT --perl.org Chris Nandor , abigail-- ATAT --foad.org, "Clinton A. Pierce" , madeline-- ATAT --oreilly.com, advocacy-- ATAT --perl.org Chris Nandor , advocacy-- ATAT --perl.org Chris Nandor , advocacy-- ATAT --perl.org, Paul Prescod Chris Nandor , advocacy-- ATAT --perl.org, brian-- ATAT --smithrenaud.com Chris Nandor , tim_meadowcroft-- ATAT --westlb.co.uk Chris Nandor ,Larry Wall Chris Nandor ,Nathan Torkington Chris Nandor ,advocacy-- ATAT --perl.org Chris Winters Christine Wanta Christopher Masto Christopher Masto Christopher Masto , advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org Colin Weaver Curtis Poe Curtis Poe , D-- ATAT --i-works.com D-- ATAT --i-works.com (Tushar Samant) D-- ATAT --i-works.com, advocacy-- ATAT --perl.org DCTressler-- ATAT --SSALLC.com (Dara C. Tressler) Damian Conway , administrator-- ATAT --yetanother.org Damien Sautereau Dan Brian Dan Brian ,advocacy-- ATAT --perl.org Dan Sugalski Dan Sugalski , advocacy-- ATAT --perl.org, Kai Henningsen , perl6-language-- ATAT --perl.org Dan Sugalski , advocacy-- ATAT --perl.org Dan Sugalski , advocacy-- ATAT --perl.org, Kai Henningsen , perl6-language-- ATAT --perl.org Darryl.Edwards-- ATAT --adc.com (Darryl Edwards) Dave Cross Dave Rolsky Dave Rolsky , advocacy-- ATAT --perl.org David Grove David Grove , Robert , advocacy-- ATAT --perl.org David Grove , Uri Guttman , advocacy-- ATAT --perl.org David Wheeler David Wheeler , Gabor Szabo David Wheeler , Gabor Szabo , advocacy-- ATAT --perl.org, Stas Bekman , Ian Kallen David Wheeler David-- ATAT --Wheeler.net (David E. Wheeler) David-- ATAT --Wheeler.net (David Wheeler) Dick Hardt Dick Hardt , Larry Wall , lembark-- ATAT --wrkhors.com, advocacy-- ATAT --perl.org DickH-- ATAT --ActiveState.com (Dick Hardt) Elaine -HFB- Ashton Elaine -HFB- Ashton , Dave Rolsky , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Dave Rolsky , Elaine -HFB- Ashton , Tom Christiansen , Ben_Tilly-- ATAT --trepp.com, "David H. Adler" , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , "Clinton A. Pierce" , madeline-- ATAT --oreilly.com, advocacy-- ATAT --perl.org Elaine -HFB- Ashton , "Peterson, Jonathan" , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Adam Turoff Elaine -HFB- Ashton , Adam Turoff , Christopher Masto , advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org Elaine -HFB- Ashton , Adam Turoff , Christopher Masto , advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org, cturner-- ATAT --redhat.com Elaine -HFB- Ashton , David Grove , Robert , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Johan Vromans , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Elaine -HFB- Ashton , John Porter Elaine -HFB- Ashton , Jon Orwant , chip-- ATAT --valinux.com, larry-- ATAT --wall.org, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Larry Wall , Jon Orwant , chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Larry Wall , Jon Orwant , tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Lisa Nyman , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , Madeline Schnapp Elaine -HFB- Ashton , Sarah Burcham , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org Elaine -HFB- Ashton , Selena Sol , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , brian d foy Elaine -HFB- Ashton , brian d foy , advocacy-- ATAT --perl.org Elaine -HFB- Ashton , dns-- ATAT --pm.org, advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org, Nathan Torkington , "Andreas J. Koenig" , chip-- ATAT --defender.perl.org Elaine -HFB- Ashton ,advocacy-- ATAT --perl.org Elizabeth Mattijsen Gabor Szabo Gabor Szabo , Ricardo Oliveira Gabor Szabo Gabor Szabo , "" Gabor Szabo , advocacy-- ATAT --perl.org Garry.Grierson-- ATAT --honeywell.com (Garry Grierson) Gavin Estey , advocacy-- ATAT --perl.org George Rapp George Rapp , advocacy-- ATAT --perl.org, pyguy-- ATAT --prescod.net Hasanuddin Tamir Hasanuddin Tamir , Selena Sol , advocacy-- ATAT --perl.org Hasanuddin Tamir , Stas Bekman , advocacy-- ATAT --perl.org Highway09-- ATAT --aol.com Horsley Tom Horsley Tom , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Iain Truskett Izz1235-- ATAT --aol.com JAMESH-- ATAT --davistl.com (James Hamilton) JPeterson-- ATAT --colt-telecom.com (Jonathan Peterson) JVromans-- ATAT --Squirrel.nl (Johan Vromans) JVromans-- ATAT --squirrel.nl JVromans-- ATAT --squirrel.nl (Johan Vromans) Jan Dubois Jan Dubois , advocacy-- ATAT --perl.org Jan Dubois Jan Dubois , advocacy-- ATAT --perl.org JanD-- ATAT --ActiveState.com (Jan Dubois) Jarkko Hietaniemi Jay Lawrence Jay-- ATAT --Lawrence.Net (Jay Lawrence) Jeff Yoak Jeremy Zawodny Jeremy Zawodny Jeremy-- ATAT --Zawodny.com (Jeremy D. Zawodny) Jeremy-- ATAT --Zawodny.com (Jeremy Zawodny) Jesse Erlbaum Jesse Erlbaum , , My Little Greppy Joel Divekar Johan Vromans Johan Vromans , advocacy-- ATAT --perl.org Johan Vromans Johan Vromans , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Johan Vromans , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org John Adams John Adams , John Porter , advocacy-- ATAT --perl.org John Adams , advocacy-- ATAT --perl.org John Porter John Porter , advocacy-- ATAT --perl.org John Porter , advocacy-- ATAT --perl.org, "Vanderhoof, Tzadik" John Porter , perl-advocacy John Porter ,advocacy-- ATAT --perl.org John Von Essen Johnathan Kupferer Johnathan Kupferer , Dave Rolsky , advocacy-- ATAT --perl.org Jon Orwant Jon Orwant , chip-- ATAT --valinux.com, larry-- ATAT --wall.org, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Jon Orwant Jon Orwant , advocacy-- ATAT --perl.org Jon Udell Jonathan Scott Duff Jonathan Stowe KMeltzer-- ATAT --USCO.com (Kevin Meltzer) Kevin Weeks Kim Ryan Kirrily Skud Robert Kurt Starsinic Kurt Starsinic , advocacy-- ATAT --perl.org Larry Wall Larry Wall , Elaine -HFB- Ashton , advocacy-- ATAT --perl.org Larry Wall , Jon Orwant , chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org Larry Wall , brian d foy , advocacy-- ATAT --perl.org Larry Wall , lembark-- ATAT --wrkhors.com Larry Wall , lembark-- ATAT --wrkhors.com, advocacy-- ATAT --perl.org Lisa Nyman Lisa Nyman , advocacy-- ATAT --perl.org Lisa Nyman Lisa Nyman , Lori Pike Madeline Schnapp Madeline Schnapp , Adam Turoff , Perl Advocacy Madeline Schnapp , Perl Advocacy Madeline Schnapp , advocacy-- ATAT --perl.org Madeline Schnapp , advocacy-- ATAT --perl.org, betsy-- ATAT --oreilly.com Mark Jacobsen Mark Mielke Mark Mielke , advocacy-- ATAT --perl.org Mark Rafn Martin Stricker Matt Sergeant , Elaine -HFB- Ashton Michael G Schwern Michael G Schwern , Adam Turoff , Christopher Masto , advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org Michael G Schwern , advocacy-- ATAT --perl.org MichaelRunningWolf-- ATAT --att.net (Michael R. Wolf) Mike Mike Shapiro Mohit Agarwal Nathan Torkington Nathan Torkington , "Vanderhoof, Tzadik" Nathan Torkington , advocacy-- ATAT --perl.org Nathan Torkington ,advocacy-- ATAT --perl.org Nathan Torkington Nathan Torkington , Shlomi Fish , advocacy-- ATAT --perl.org Nathan Torkington , advocacy-- ATAT --perl.org Nathan Torkington , advocacy-- ATAT --perl.org, "Scott R. Godin" Nicholas Clark Nicholas Clark , Piers Cawley , advocacy-- ATAT --perl.org Nicholas Clark , Piers Cawley , advocacy-- ATAT --perl.org Nicholas Clark Nicholas Clark , Dave Rolsky , advocacy-- ATAT --perl.org Nicholas Clark , advocacy-- ATAT --perl.org Otto Wyss PBRA01-- ATAT --CONAGRAFROZEN.COM (Phil Brammer) Paul Johnson Paul Johnson , Piers Cawley , advocacy-- ATAT --perl.org Paul Prescod Paul Prescod , George Rapp , advocacy-- ATAT --perl.org, pyguy-- ATAT --prescod.net Paul Prescod , "David H. Adler" , advocacy-- ATAT --perl.org Paul Prescod , advocacy-- ATAT --perl.org Perl Advocacy Perl Advocacy , betsy-- ATAT --oreilly.com Perl Advocacy List PerlAdvoc Peter Scott Peter Scott , Ajit Deshpande , advocacy-- ATAT --perl.org, pudge-- ATAT --pobox.com Peter Scott , John Porter , advocacy-- ATAT --perl.org Peter Scott , Nathan Torkington , advocacy-- ATAT --perl.org Peter Scott , Russ Allbery , advocacy-- ATAT --perl.org Peter Scott , Sarah Burcham , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org Peter Scott , advocacy-- ATAT --perl.org Peter Scott , perl-advocacy Peter Scott Peter Scott , advocacy-- ATAT --perl.org Peter Scott , advocacy-- ATAT --perl.org, Nat Torkington Peter-- ATAT --PSDT.com Peter-- ATAT --PSDT.com (Peter Scott) Peter-- ATAT --PSDT.com, advocacy-- ATAT --perl.org Phil.Moore-- ATAT --morganstanley.com Phil.Moore-- ATAT --morganstanley.com (Phil Moore) Phil.Moore-- ATAT --morganstanley.com, dan-- ATAT --sidhe.org, advocacy-- ATAT --perl.org, kaih-- ATAT --khms.westfalen.de, perl6-language-- ATAT --perl.org Phil.Moore-- ATAT --msdw.com Phil.Moore-- ATAT --msdw.com (Phil Moore) Phil.Moore-- ATAT --msdw.com, Johan Vromans , advocacy-- ATAT --perl.org Philip Newton Piers Cawley Piers Cawley , advocacy-- ATAT --perl.org Ricardo Oliveira Ricardo Oliveira , advocacy-- ATAT --perl.org Rich Bowen Rich Morin Robert Robert , advocacy-- ATAT --perl.org Rodney Clang Rodney Clang , advocacy-- ATAT --perl.org Ronald J Kimball Russ Allbery ,advocacy-- ATAT --perl.org Sami Sarah Burcham Sarah Burcham , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org Sarah Burcham , advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org Selena Sol Selena Sol , Selena Sol , advocacy-- ATAT --perl.org Selena Sol , advocacy-- ATAT --perl.org, stephen.adkins-- ATAT --officevision.com Shlomi Fish Shlomi Fish , "David H. Adler" , Shlomi Fish , Simon Cozens , advocacy-- ATAT --perl.org Shlomi Fish , Shlomi Fish , advocacy-- ATAT --perl.org Shlomi Fish Sidharth Malhotra Sidharth Malhotra , perl-advocacy Simon Cozens Simon Cozens , advocacy-- ATAT --perl.org Simon Cozens Simon Cozens , Nathan Torkington , advocacy-- ATAT --perl.org Simon Cozens Simon Cozens Simon Cozens , Simon Cozens , advocacy-- ATAT --perl.org Stas Bekman Stas Bekman , Ian Kallen , Gabor Szabo , advocacy-- ATAT --perl.org Stas Bekman , Tzadik Vanderhoof Stas Bekman , advocacy-- ATAT --perl.org Stas Bekman , perl-advocacy Steffen Mueller <6jrwvn6d02-- ATAT --sneakemail.com> Steve Fink Steve Fink , advocacy-- ATAT --perl.org Steven Lembark Steven Lembark , advocacy-- ATAT --perl.org Swami VenkataRamanan Tad McClellan Tim Bunce Tim Bunce , Chris Nandor , George Rapp , advocacy-- ATAT --perl.org, pyguy-- ATAT --prescod.net Tim Bunce , advocacy-- ATAT --perl.org Tim Bunce Tim Bunce , Selena Sol , advocacy-- ATAT --perl.org Tim.Bunce-- ATAT --ig.co.uk Tim.Bunce-- ATAT --ig.co.uk (Tim Bunce) Tim.Bunce-- ATAT --ig.co.uk, dagon-- ATAT --dagon.net, advocacy-- ATAT --perl.org, paul-- ATAT --prescod.net Tim.Bunce-- ATAT --pobox.com (Tim Bunce) Tom Christiansen Tom Christiansen , Ben_Tilly-- ATAT --trepp.com, "David H. Adler" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Tom Christiansen , Ben_Tilly-- ATAT --trepp.com, "David H. Adler" , advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org Tom.Horsley-- ATAT --ccur.com (Horsley Tom) Tommy Butler Troy Denkinger Troy Denkinger , advocacy-- ATAT --perl.org Tushar Samant Tushar Samant Tushar Samant , advocacy-- ATAT --perl.org Tzadik Vanderhoof Tzadik Vanderhoof , "'Gabor Szabo'" , Tzadik and Sheva Vanderhoof Tzadik.Vanderhoof-- ATAT --THINQ.com (Tzadik Vanderhoof) Uri Guttman Uri Guttman , advocacy-- ATAT --perl.org Uri Guttman Uri Guttman , advocacy-- ATAT --perl.org Uri Guttman , daniel-- ATAT --chetlin.com, lembark-- ATAT --wrkhors.com Vicki Brown WPham-- ATAT --camico.com (Walter Pham) WWW Wagner-David-- ATAT --vikingfreight.com (Wagner-David) Wayne Haufler WeaverC-- ATAT --Cardiff.ac.uk (Colin Weaver) Wiggins d'Anconia William R Ward William R Ward , advocacy-- ATAT --perl.org _brian_d_foy _brian_d_foy , Lisa Nyman _brian_d_foy , advocacy-- ATAT --perl.org abigail-- ATAT --abigail.nl abigail-- ATAT --abigail.nl (Abigail) abigail-- ATAT --foad.org abigail-- ATAT --foad.org (Abigail) abigail-- ATAT --foad.org, "Clinton A. Pierce" , madeline-- ATAT --oreilly.com, advocacy-- ATAT --perl.org abigail-- ATAT --foad.org, Elaine -HFB- Ashton , "Clinton A. Pierce" , madeline-- ATAT --oreilly.com, advocacy-- ATAT --perl.org abigail-- ATAT --foad.org, Nathan Torkington abigail-- ATAT --foad.org, advocacy-- ATAT --perl.org abigail-- ATAT --ucan.foad.org (Abigail) abw-- ATAT --cre.canon.co.uk (Andy Wardley) abw-- ATAT --kfs.org (Andy Wardley) acme-- ATAT --astray.com (Leon Brocard) adam.turoff-- ATAT --isinet.com adam.turoff-- ATAT --isinet.com (Adam Turoff) advocacy advocacy-- ATAT --perl.org advocacy-- ATAT --perl.org, "Scott R. Godin" advocacy-- ATAT --perl.org, "Vanderhoof, Tzadik" advocacy-- ATAT --perl.org, 6jrwvn6d02-- ATAT --sneakemail.com advocacy-- ATAT --perl.org, Chris Nandor advocacy-- ATAT --perl.org, Jon Orwant advocacy-- ATAT --perl.org, Jon Udell advocacy-- ATAT --perl.org, Kai Henningsen advocacy-- ATAT --perl.org, Kai Henningsen , perl6-language-- ATAT --perl.org advocacy-- ATAT --perl.org, Otto Wyss advocacy-- ATAT --perl.org, Paul Prescod advocacy-- ATAT --perl.org, Rusty Foster advocacy-- ATAT --perl.org, Stas Bekman , Ian Kallen advocacy-- ATAT --perl.org, _brian_d_foy , Lisa Nyman advocacy-- ATAT --perl.org, abigail-- ATAT --foad.net advocacy-- ATAT --perl.org, ace-- ATAT --tidbits.com advocacy-- ATAT --perl.org, autarch-- ATAT --urth.org (Dave Rolsky) advocacy-- ATAT --perl.org, betsy-- ATAT --oreilly.com advocacy-- ATAT --perl.org, boston-pm-- ATAT --hfb.pm.org advocacy-- ATAT --perl.org, brian-- ATAT --smithrenaud.com advocacy-- ATAT --perl.org, colin_richard_weaver-- ATAT --hotmail.com advocacy-- ATAT --perl.org, daniel-- ATAT --chetlin.com, lembark-- ATAT --wrkhors.com advocacy-- ATAT --perl.org, dbi-users-- ATAT --perl.org advocacy-- ATAT --perl.org, dickh-- ATAT --activestate.com advocacy-- ATAT --perl.org, fwp-- ATAT --technofile.org advocacy-- ATAT --perl.org, gnat-- ATAT --frii.com, brian-- ATAT --smithrenaud.com advocacy-- ATAT --perl.org, jesse-- ATAT --VM.COM (Jesse Erlbaum) advocacy-- ATAT --perl.org, jobs-discuss-- ATAT --perl.org advocacy-- ATAT --perl.org, madeline-- ATAT --oreilly.com, betsy-- ATAT --oreilly.com advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org advocacy-- ATAT --perl.org, marsneedswomen-- ATAT --hfb.pm.org advocacy-- ATAT --perl.org, merlyn-- ATAT --stonehenge.com advocacy-- ATAT --perl.org, paul-- ATAT --prescod.net advocacy-- ATAT --perl.org, perl-mongers-general-- ATAT --pm.org advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org advocacy-- ATAT --perl.org, perl6-meta-- ATAT --perl.org advocacy-- ATAT --perl.org, pudge-- ATAT --pobox.com advocacy-- ATAT --perl.org, pyguy-- ATAT --prescod.net advocacy-- ATAT --perl.org, sara-- ATAT --oreilly.com, betsy-- ATAT --oreilly.com, kevin-- ATAT --oreilly.com advocacy-- ATAT --perl.org, shlomif-- ATAT --vipe.technion.ac.il (Shlomi Fish) advocacy-- ATAT --perl.org, submissions-- ATAT --perlmongers.org advocacy-- ATAT --perl.org, tchrist-- ATAT --perl.com advocacy-- ATAT --perl.org, twilde-- ATAT --dyndns.org advocacy-- ATAT --perl.org, webmaster-- ATAT --webdragon.net (Scott R. Godin) advocacy-- ATAT --perl.org,Chris Nandor ajit-- ATAT --pobox.com (Ajit Deshpande) ajit-- ATAT --skycorp.net (Ajit Deshpande) ajit-- ATAT --skycorp.net, advocacy-- ATAT --perl.org, pudge-- ATAT --pobox.com ajsavige-- ATAT --yahoo.com.au (=?Iso-8859-1?Q?Andrew=20savige?=) alan-- ATAT --clueserver.org (Alan Olsen) aml-- ATAT --world.std.com (Andrew M. Langmead) andrew-- ATAT --sweger.net (Andrew Sweger) andrew-- ATAT --zpok.demon.co.uk (Andrew Simmons) andy-- ATAT --petdance.com (Andy Lester) angela-- ATAT --racsystem.com ashton-- ATAT --netcom.com (Ashub) ask-- ATAT --develooper.com (Ask Bjoern Hansen) ask-- ATAT --netcetera.dk ask-- ATAT --netcetera.dk (Ask Bjoern Hansen) ask-- ATAT --perl.org ask-- ATAT --perl.org (Ask Bjoern Hansen) ask-- ATAT --perl.org, , ask-- ATAT --valueclick.com (Ask Bjoern Hansen) autarch-- ATAT --urth.org (Dave Rolsky) bah-- ATAT --ecnvantage.com (Benjamin Holzman) bah-- ATAT --orientation.com (Benjamin Holzman) bcamer1-- ATAT --hotmail.com (Bonnie M. Cameron) bdoucette-- ATAT --ixl.com bdoucette-- ATAT --ixl.com, advocacy-- ATAT --perl.org, gnat-- ATAT --frii.com, brian-- ATAT --smithrenaud.com betsy-- ATAT --oreilly.com betsy-- ATAT --oreilly.com (Betsy Waliszewski) betsy-- ATAT --oreilly.com, jdporter-- ATAT --min.net, advocacy-- ATAT --perl.org betsy-- ATAT --oreilly.com, madeline-- ATAT --oreilly.com bhilton-- ATAT --adc.com (Brand Hilton) bholzman-- ATAT --longitude.com (Benjamin Holzman) bill-- ATAT --fccj.org (Bill Jones) bill-- ATAT --wards.net (William R. Ward) bkuhn-- ATAT --ebb.org bkuhn-- ATAT --ebb.org (Bradley M. Kuhn) blowther-- ATAT --micron.com (Blowther) bodyshock911-- ATAT --hotmail.com (Calvin Lee) bogus-- ATAT --nntp.perl.org (Unknown Sender) brent-- ATAT --perl.org brent-- ATAT --perlguy.net (Brent Michalski) brian d foy brian d foy brian d foy , advocacy-- ATAT --perl.org brian d foy ,advocacy-- ATAT --perl.org brian-- ATAT --smithrenaud.com brian-- ATAT --sri.net (Brian D Foy) bschulte-- ATAT --zeelandnet.nl (Bas A . Schulte) bschulte-- ATAT --zeelandnet.nl (Bas A. Schulte) burston-- ATAT --ledge.co.za (Ashley Burston) bwarnock-- ATAT --capita.com (Bryan C. Warnock) bwarnock-- ATAT --capita.com, advocacy-- ATAT --perl.org casey-- ATAT --geeknest.com (Casey West) casey-- ATAT --geeknest.com, advocacy-- ATAT --perl.org cdevers-- ATAT --boston.com (Chris Devers) cdevers-- ATAT --cis.usouthal.edu (Chris Devers) cdevers-- ATAT --pobox.com (Chris Devers) cdevers-- ATAT --tsunami.cis.usouthal.edu (Chris Devers) charlie_mumps-- ATAT --bangkok.com (Charles Volkstorf) chbarr-- ATAT --rocketmail.com (Charles Barilleaux) chichengzhang-- ATAT --home.com (Chicheng Zhang) chip-- ATAT --pobox.com (Chip Salzenberg) chip-- ATAT --valinux.com chip-- ATAT --valinux.com (Chip Salzenberg) chip-- ATAT --valinux.com, larry-- ATAT --wall.org, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org chris-- ATAT --cwinters.com (Chris Winters) chris-- ATAT --devers.homeip.net (Chris Devers) chris-- ATAT --masto.com (Christopher Masto) chris-- ATAT --netmonger.net (Christopher Masto) chris_hill-- ATAT --mentorg.com (Chris Hill) chrisb-- ATAT --jesmond.demon.co.uk (Chris Benson) chrisl_ak-- ATAT --hotmail.com (Chris) chromatic chromatic-- ATAT --wgz.org (Chromatic) clintp-- ATAT --geeksalad.org (Clinton A . Pierce) clintp-- ATAT --geeksalad.org (Clinton A. Pierce) colin_richard_weaver-- ATAT --hotmail.com comdog-- ATAT --panix.com (Brian D Foy) comdog-- ATAT --panix.com (_brian_d_foy) cp-- ATAT --onsitetech.com (Curtis Poe) cwanta-- ATAT --dra.com (Christine Wanta) cwinters-- ATAT --intes.net (Chris Winters) dagon-- ATAT --dagon.net (Mark Rafn) dagon-- ATAT --dagon.net, advocacy-- ATAT --perl.org, paul-- ATAT --prescod.net dale-- ATAT --oreilly.com (Dale Dougherty) damian-- ATAT --conway.org (Damian) damian-- ATAT --conway.org, Phil.Moore-- ATAT --morganstanley.com, jobs-discuss-- ATAT --perl.org, advocacy-- ATAT --perl.org dan-- ATAT --brians.org (Dan Brian) dan-- ATAT --sidhe.org (Dan Sugalski) daniel-- ATAT --chetlin.com daniel-- ATAT --chetlin.com (Daniel Chetlin) daniel-- ATAT --chetlin.com, advocacy-- ATAT --perl.org dave-- ATAT --dave.org.uk (Dave Cross) david-- ATAT --kineticode.com (David Wheeler) david-- ATAT --wheeler.net (David Wheeler) david.cross-- ATAT --uk.fid-intl.com (David Cross) dbi-users-- ATAT --perl.org, advocacy-- ATAT --perl.org dean-- ATAT --oven.com dha-- ATAT --panix.com (David H. Adler) dha-- ATAT --panix.com, Ben_Tilly-- ATAT --trepp.com, pudge-- ATAT --pobox.com, advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org dickh-- ATAT --activestate.com dkt-- ATAT --registriesltd.com.au (David K. Trudgett) dlists-- ATAT --inbed.org (Dragons Spam Account) dsautereau-- ATAT --magic.fr (Damien Sautereau) dsilvia-- ATAT --ptc.com (Donald J Silvia) duff-- ATAT --cbi.tamucc.edu (Jonathan Scott Duff) duff-- ATAT --pobox.com duff-- ATAT --pobox.com, "Bas A. Schulte" elaine-- ATAT --chaos.wustl.edu elaine-- ATAT --chaos.wustl.edu (Elaine -Hfb- Ashton) elaine-- ATAT --chaos.wustl.edu (Elaine) elaine-- ATAT --chaos.wustl.edu, larry-- ATAT --wall.org, orwant-- ATAT --media.mit.edu, chip-- ATAT --valinux.com, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org elaine-- ATAT --chaos.wustl.edu, larry-- ATAT --wall.org, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org elfner-- ATAT --us.ibm.com essenz-- ATAT --beck.quonix.net (John Von Essen) essenz-- ATAT --essenz.com (Www) frowies-- ATAT --sfanet.com.ar (Fernando Rowies) fschmuck-- ATAT --lcch.org (Frank Schmuck) fsl-- ATAT --centroin.com.br (Fernando Lozano) fwp-- ATAT --perl.org, jobs-discuss-- ATAT --perl.org, advocacy-- ATAT --perl.org fwp-- ATAT --technofile.org, advocacy-- ATAT --perl.org fwp-- ATAT --technofile.org,advocacy-- ATAT --perl.org gabor-- ATAT --perl.org.il (Gabor Szabo) gabor-- ATAT --tracert.com (Gabor Szabo) gavin-- ATAT --bock.com (Gavin Estey) gcrowder-- ATAT --sonic.net (Greg Crowder) gnat-- ATAT --frii.com (Nathan Torkington) gnat-- ATAT --oreilly.com gnat-- ATAT --oreilly.com (Nathan Torkington) gnat-- ATAT --oreilly.com, advocacy-- ATAT --perl.org grapp01-- ATAT --mail.dfas.msd.eds.com (George Rapp) gwadej-- ATAT --anomaly.org (G . Wade Johnson) gwadej-- ATAT --anomaly.org (G. Wade Johnson) hasant-- ATAT --trabas.com (Hasanuddin Tamir) henning.nielsen-- ATAT --datagraf.dk (=?Iso-8859-1?Q?Henning_m=F8ller-Nielsen?=) henrypan-- ATAT --lucent.com (Henry ** Ctr ** Pan) hermit-- ATAT --BayView.COM (William R. Ward) hmn-- ATAT --datagraf.dk (=?Us-Ascii?Q?Henning_michael_moller-Nielsen?=) holm0440-- ATAT --tc.umn.edu (Ben Holmberg) info-- ATAT --pressio.com (Pressio Main) j.schroeder-- ATAT --rockwelldatacorp.com (J Schroeder) jadams01-- ATAT --sprynet.com jadams01-- ATAT --sprynet.com (John Adams) jadams01-- ATAT --sprynet.com, Chris Benson , advocacy-- ATAT --perl.org jadams01-- ATAT --sprynet.com, advocacy-- ATAT --perl.org jand-- ATAT --ActiveState.com (Jan Dubois) jboes-- ATAT --nexcerpt.com (Jeff Boes) jdporter-- ATAT --min.net (John Porter) jeff-- ATAT --yoak.com jeff-- ATAT --yoak.com (Jeff Yoak) jesse-- ATAT --VM.COM (Jesse Erlbaum) jgsmith-- ATAT --moya.tamu.edu (Jim Smith) jkeeble-- ATAT --alpha.net.au (Jon Keeble) jlawrenc-- ATAT --infonium.com (Jay Lawrence) jmay-- ATAT --pobox.com jmay-- ATAT --pobox.com (Jason W. May) jmay-- ATAT --pobox.com, perl-advocacy jmm-- ATAT --elegant.com, jhi-- ATAT --iki.fi, tchrist-- ATAT --mox.perl.com jns-- ATAT --btinternet.com (Jonathan Stowe) jns-- ATAT --gellyfish.com jns-- ATAT --gellyfish.com (Jonathan Stowe) jobs-discuss-- ATAT --perl.org, advocacy-- ATAT --perl.org jobs-discuss-- ATAT --perl.org, advocacy-- ATAT --perl.org, Damian Conway , administrator-- ATAT --yetanother.org joel-- ATAT --qlcomm.com (Joel Divekar) john-- ATAT --essenz.com (John Von Essen) johnathan-- ATAT --gnuthought.com (Johnathan Kupferer) jon-- ATAT --orwant.com joseph-- ATAT --5sigma.com joseph-- ATAT --5sigma.com (Joseph N. Hall) jvromans-- ATAT --squirrel.nl (Johan Vromans) jzawodn-- ATAT --yahoo-inc.com (Jeremy Zawodny) kaasiein-- ATAT --yahoo.co.in (=?Iso-8859-1?Q?Kasi=20rama?=) kalim-- ATAT --erols.com (Asj) kalim-- ATAT --erols.com (Kalim) kcarlson-- ATAT --tpj.comadvocacy-- ATAT --perl.org kevin-- ATAT --oreilly.com (Kevin Bingham) kevin.weeks-- ATAT --coriolis.com (Kevin Weeks) kimaryan-- ATAT --ozemail.com.au kimaryan-- ATAT --ozemail.com.au (Kim Ryan) kimaryan-- ATAT --ozemail.com.au, advocacy-- ATAT --perl.org krissrolo-- ATAT --aol.com (Kriss Rolo) kstar-- ATAT --chapin.edu (Kurt D. Starsinic) kstar-- ATAT --cpan.org kstar-- ATAT --cpan.org (Kurt Starsinic) kstar-- ATAT --wolfetech.com (Kurt D. Starsinic) lalamaziwa-- ATAT --jca.apc.org (Lalamaziwa) larry-- ATAT --wall.org larry-- ATAT --wall.org (Larry Wall) lejm3-- ATAT --hermes.cam.ac.uk (Lucy McWilliam) lembark-- ATAT --wrkhors.com lembark-- ATAT --wrkhors.com (Steven Lembark) lembark-- ATAT --wrkhors.com, advocacy-- ATAT --perl.org liz-- ATAT --dijkmat.nl (Elizabeth Mattijsen) liza-- ATAT --publicinteractive.com (Liza Daly) lmui-- ATAT --oreilly.com, paula-- ATAT --oreilly.com lnyman-- ATAT --census.gov (Lisa Nyman) lnyman-- ATAT --info.census.gov (Lisa Nyman) london.pm-- ATAT --bang.meep.org (The Hatter) lori.pike-- ATAT --sophos.com (Lori Pike) lorip-- ATAT --ActiveState.com lorip-- ATAT --ActiveState.com (Lori Pike) madcat-- ATAT --ghostfield.com (Bernhard Van Staveren) madeline-- ATAT --oreilly.com (Madeline Schnapp) madeline-- ATAT --oreilly.com, advocacy-- ATAT --perl.org madeline-- ATAT --oreilly.com, betsy-- ATAT --oreilly.com madeline-- ATAT --oreilly.com, pudge-- ATAT --pobox.com madeline-- ATAT --oreilly.com, pudge-- ATAT --pobox.com, advocacy-- ATAT --perl.org mailing_list-- ATAT --hostpacific.com (Kman) mark.keegan-- ATAT --paradise.net.nz (Mark Keegan) markj-- ATAT --oreilly.com (Mark Jacobsen) markm-- ATAT --nortelnetworks.com (Mark Mielke) marsneedswomen-- ATAT --happyfunball.pm.org, perl-hackers-- ATAT --stlouis.pm.org matt-- ATAT --sergeant.org (Matt Sergeant) meconlen-- ATAT --obfuscated.net (Michael Conlen) merlyn-- ATAT --stonehenge.com (Randal L. Schwartz), advocacy-- ATAT --perl.org, jesse-- ATAT --VM.COM (Jesse Erlbaum) mjd-- ATAT --plover.com mjd-- ATAT --plover.com (Mark-Jason Dominus) mjd-- ATAT --plover.com, grapp01-- ATAT --mail.dfas.msd.eds.com modperl list mohit-- ATAT --foc.demonhosting.co.uk (Mohit Agarwal) murrayb-- ATAT --VANSEL.ALCATEL.COM (Brad Murray) murrayb-- ATAT --vansel.alcatel.com (Brad Murray) newton-- ATAT --newton.digitalspace.net (Philip Newton) nextrightmove-- ATAT --yahoo.com (Greg Norris \) nick-- ATAT --ccl4.org (Nicholas Clark) nick-- ATAT --talking.bollo.cx (Nicholas Clark) nick-- ATAT --unfortu.net (Nicholas Clark) nom_du_pere-- ATAT --yahoo.com (Mike) ofischer-- ATAT --SPM.DE (Oliver Fischer) orwant-- ATAT --media.mit.edu orwant-- ATAT --media.mit.edu (Jon Orwant) orwant-- ATAT --media.mit.edu, larry-- ATAT --wall.org orwant-- ATAT --media.mit.edu, tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org orwant-- ATAT --oreilly.com (Jon Orwant) p.carmichael-- ATAT --btinternet.com (P Carmichael) p.carmichael-- ATAT --btinternet.com (Patrick Carmichael) p.carmichael-- ATAT --btinternet.com, advocacy-- ATAT --perl.org paul-- ATAT --breslaw.demon.co.uk (Paul Breslaw) paul-- ATAT --pjcj.net (Paul Johnson) paul-- ATAT --prescod.net (Paul Prescod) pcarter150-- ATAT --comcast.net (Pamela Carter) pdcawley-- ATAT --bofh.org.uk pdcawley-- ATAT --bofh.org.uk (Piers Cawley) perl-advocacy perl-advocacy , Jonathan Stowe perl5-porters-- ATAT --perl.org perl5-porters-- ATAT --perl.org, Abigail perl5-porters-- ATAT --perl.org, advocacy-- ATAT --perl.org perl6-language-- ATAT --perl.org perl6-meta-- ATAT --perl.org, advocacy-- ATAT --perl.org perlhead-- ATAT --hotmail.com (Arron Hart) pete-- ATAT --petes-place.com pete-- ATAT --petes-place.com (David Grove) pete-- ATAT --petes-place.com (David T. Grove) peter-- ATAT --PSDT.com (Peter Scott) peter-- ATAT --psdt.com (Peter Scott) pressio main pressio main , advocacy-- ATAT --perl.org pressio-- ATAT --pressio.com (Pressio Main Email) pudge-- ATAT --pobox.com pudge-- ATAT --pobox.com (Chris Nandor) pudge-- ATAT --pobox.com, advocacy-- ATAT --perl.org, perl5-porters-- ATAT --perl.org pyguy-- ATAT --prescod.net rbowen-- ATAT --rcbowen.com (Rich Bowen) rclang-- ATAT --lewan.com (Rodney Clang) rdm-- ATAT --cfcl.com rdm-- ATAT --cfcl.com (Rich Morin) rice.audio-- ATAT --pobox.com (Robert Carl Rice) riceaudio-- ATAT --earthlink.net (Robert Rice) richard.foley-- ATAT --ubs.com (Richard Foley) richard.foley-- ATAT --ubs.com, advocacy-- ATAT --perl.org richly-- ATAT --samart.co.th (Robert White) rjk-- ATAT --linguist.dartmouth.edu (Ronald J Kimball) rjray-- ATAT --redhat.com (Randy J. Ray) rlmcdo-- ATAT --netcabo.pt (Ricardo Oliveira) robert-- ATAT --bangkokwizard.com (Robert) robert-- ATAT --richlybangkok.com (Robert) rodney.clang-- ATAT --lewan.com (Rodney Clang) roland.giersig-- ATAT --alcatel.at (Roland Giersig) sam_metu002-- ATAT --email.com (Sam Metu002) sara-- ATAT --oreilly.com, betsy-- ATAT --oreilly.com, kevin-- ATAT --oreilly.com sarah-- ATAT --pound.perl.org (Sarah Burcham) schwern-- ATAT --pobox.com schwern-- ATAT --pobox.com (Michael G Schwern) selena-- ATAT --eXtropia.com (Selena Sol) sfink-- ATAT --digital-integrity.com (Steve Fink) shildreth-- ATAT --emsphone.com (Scott T. Hildreth) shlomif-- ATAT --iglu.org.il (Shlomi Fish) shlomif-- ATAT --vipe.technion.ac.il (Shlomi Fish) shugal-- ATAT --gmx.de (Martin Stricker) silver-- ATAT --oreilly.com (Ellen Maremont Silver) simon-- ATAT --cozens.net (Simon Cozens) simon-- ATAT --netthink.co.uk (Simon Cozens) skud-- ATAT --infotrope.net (Kirrily "Skud" Robert) skud-- ATAT --netizen.com.au skud-- ATAT --netizen.com.au, advocacy-- ATAT --perl.org smalhotr-- ATAT --jwmp.com (Sidharth Malhotra) sml-- ATAT --zfx.com (Steve Lane) sneex-- ATAT --sneex.fccj.org (Systems Hacker) solrac-- ATAT --us.ibm.com (Frank Carlos) spm-- ATAT --star.arm.ac.uk (Scott Manley) spoon-- ATAT --cpan.org (Iain Truskett) squid-- ATAT --panix.com (Yeoh Yiu) stas-- ATAT --stason.org (Stas Bekman) stephenc-- ATAT --theiqgroup.com (Stephen Clouse) stvhoof-- ATAT --nni.com (Tzadik And Sheva Vanderhoof) submissions-- ATAT --perlmongers.org swamiv-- ATAT --granitar.com (Swami Venkataramanan) tadmc-- ATAT --augustmail.com (Tad McClellan) tadmc-- ATAT --metronet.com talbutt-- ATAT --seas.upenn.edu, skud-- ATAT --infotrope.net tchrist-- ATAT --chthon.perl.com (Tom Christiansen) tidbit-- ATAT --sri.net tidbit-- ATAT --sri.net (Brian D Foy) tidbit-- ATAT --sri.net, advocacy-- ATAT --perl.org tim_meadowcroft-- ATAT --westlb.co.uk tim_meadowcroft-- ATAT --westlb.co.uk (Tim Meadowcroft) tim_meadowcroft-- ATAT --westlb.co.uk, advocacy-- ATAT --perl.org tim_meadowcroft-- ATAT --westlb.co.uk, pete-- ATAT --petes-place.com tommy-- ATAT --atrixnet.com (Tommy Butler) troy-- ATAT --whadda.com (Troy Denkinger) turnerjh-- ATAT --pattern.net (Chip Turner) tushar-- ATAT --i-works.com (Tushar Samant) tvanderhoof-- ATAT --syscom-inc.com (Tzadik Vanderhoof) tvanderhoof-- ATAT --trainingserver.com (Tzadik Vanderhoof) uri-- ATAT --stemsystems.com (Uri Guttman) uri-- ATAT --sysarch.com (Uri Guttman) vlb-- ATAT --cfcl.com vlb-- ATAT --cfcl.com (Vicki Brown) vlb-- ATAT --cfcl.com, advocacy-- ATAT --perl.org waltman-- ATAT --pobox.com (Walt Mankowski) webmaster-- ATAT --tpj.com webmaster-- ATAT --webdragon.net (Scott R. Godin) whaufler-- ATAT --MIGRATEC.COM (Wayne Haufler) wiggins-- ATAT --danconia.org wiggins-- ATAT --danconia.org (Wiggins D'Anconia) will-- ATAT --coleda.com wpm-- ATAT --ms.com (W. Phillip Moore) wwv-- ATAT --mac.com (Ward Vuillemot) wwv-- ATAT --mac.com (Ward W. Vuillemot) xmtj-- ATAT --rims.com (Mark T. Johns) z153iq-- ATAT --yahoo.com (Zach I.) ziggy-- ATAT --panix.com (Adam Turoff) ea-vs-ma.pl100644000766000766 143412200763437 16345 0ustar00rjbsrjbs000000000000Email-Address-1.900/bench#!/usr/local/bin/perl; use Benchmark qw[:all]; use strict; $^W = 1; use Email::Address; use Mail::Address; sub testit { my ($class) = @_; open CORPUS, $ARGV[0] or die $!; while () { s/-- ATAT --/@/g; my @objs = $class->parse($_); my @new_objs = map $class->new($_->phrase, $_->address, $_->comment), @objs; foreach my $obj ( @objs, @new_objs ) { foreach ( qw[phrase address comment format name host user] ) { my $blah = $obj->$_; } foreach ( qw[address phrase comment] ) { $obj->$_('foo'); } } } close CORPUS; } cmpthese($ARGV[1] || 10, { 'Mail::Address' => sub { testit 'Mail::Address' }, 'Email::Address' => sub { testit 'Email::Address' }, }); too_long.pl100644000766000766 21712200763437 16535 0ustar00rjbsrjbs000000000000Email-Address-1.900/benchuse Email::Address; $value = q{first@foo.org,} . q{ } x 26 . q{second@foo.org}; use Data::Dumper; print Dumper(Email::Address->parse($value)); quote-encoded.t100644000766000766 110612200763437 16503 0ustar00rjbsrjbs000000000000Email-Address-1.900/t#!perl use strict; # This test graciously donated by Tatsuhiko Miyagawa. All praise MIYAGAWA! use Test::More; plan skip_all => "Encode and Encode::MIME::Header required for these tests" unless eval { require Encode; require Encode::MIME::Header; 1 }; plan tests => 2; use Email::Address; Encode->import; Encode::MIME::Header->import; my $name = "\x{30c6}\x{30b9}\x{30c8}"; # "Test" in Unicode Japanese my $mime = encode("MIME-Header", $name); my $addr = Email::Address->new($mime => 'foo@example.com'); like $addr->format, qr/^=\?UTF-8/; unlike $addr->format, qr/^"=\?/; Email000755000766000766 012200763437 14756 5ustar00rjbsrjbs000000000000Email-Address-1.900/libAddress.pm100644000766000766 3503012200763437 17062 0ustar00rjbsrjbs000000000000Email-Address-1.900/lib/Emailuse strict; use warnings; package Email::Address; { $Email::Address::VERSION = '1.900'; } # ABSTRACT: RFC 2822 Address Parsing and Creation our $COMMENT_NEST_LEVEL ||= 2; our $STRINGIFY ||= 'format'; our $COLLAPSE_SPACES = 1 unless defined $COLLAPSE_SPACES; # I miss //= my $CTL = q{\x00-\x1F\x7F}; my $special = q{()<>\\[\\]:;@\\\\,."}; my $text = qr/[^\x0A\x0D]/; my $quoted_pair = qr/\\$text/; my $ctext = qr/(?>[^()\\]+)/; my ($ccontent, $comment) = (q{})x2; for (1 .. $COMMENT_NEST_LEVEL) { $ccontent = qr/$ctext|$quoted_pair|$comment/; $comment = qr/\s*\((?:\s*$ccontent)*\s*\)\s*/; } my $cfws = qr/$comment|\s+/; my $atext = qq/[^$CTL$special\\s]/; my $atom = qr/$cfws*$atext+$cfws*/; my $dot_atom_text = qr/$atext+(?:\.$atext+)*/; my $dot_atom = qr/$cfws*$dot_atom_text$cfws*/; my $qtext = qr/[^\\"]/; my $qcontent = qr/$qtext|$quoted_pair/; my $quoted_string = qr/$cfws*"$qcontent+"$cfws*/; my $word = qr/$atom|$quoted_string/; # XXX: This ($phrase) used to just be: my $phrase = qr/$word+/; It was changed # to resolve bug 22991, creating a significant slowdown. Given current speed # problems. Once 16320 is resolved, this section should be dealt with. # -- rjbs, 2006-11-11 #my $obs_phrase = qr/$word(?:$word|\.|$cfws)*/; # XXX: ...and the above solution caused endless problems (never returned) when # examining this address, now in a test: # admin+=E6=96=B0=E5=8A=A0=E5=9D=A1_Weblog-- ATAT --test.socialtext.com # So we disallow the hateful CFWS in this context for now. Of modern mail # agents, only Apple Web Mail 2.0 is known to produce obs-phrase. # -- rjbs, 2006-11-19 my $simple_word = qr/$atom|\.|\s*"$qcontent+"\s*/; my $obs_phrase = qr/$simple_word+/; my $phrase = qr/$obs_phrase|(?:$word+)/; my $local_part = qr/$dot_atom|$quoted_string/; my $dtext = qr/[^\[\]\\]/; my $dcontent = qr/$dtext|$quoted_pair/; my $domain_literal = qr/$cfws*\[(?:\s*$dcontent)*\s*\]$cfws*/; my $domain = qr/$dot_atom|$domain_literal/; my $display_name = $phrase; our $addr_spec = qr/$local_part\@$domain/; our $angle_addr = qr/$cfws*<$addr_spec>$cfws*/; our $name_addr = qr/$display_name?$angle_addr/; our $mailbox = qr/(?:$name_addr|$addr_spec)$comment*/; sub _PHRASE () { 0 } sub _ADDRESS () { 1 } sub _COMMENT () { 2 } sub _ORIGINAL () { 3 } sub _IN_CACHE () { 4 } our (%PARSE_CACHE, %FORMAT_CACHE, %NAME_CACHE); my $NOCACHE; sub __get_cached_parse { return if $NOCACHE; my ($class, $line) = @_; return @{$PARSE_CACHE{$line}} if exists $PARSE_CACHE{$line}; return; } sub __cache_parse { return if $NOCACHE; my ($class, $line, $addrs) = @_; $PARSE_CACHE{$line} = $addrs; } sub parse { my ($class, $line) = @_; return unless $line; $line =~ s/[ \t]+/ /g if $COLLAPSE_SPACES; if (my @cached = $class->__get_cached_parse($line)) { return @cached; } my (@mailboxes) = ($line =~ /$mailbox/go); my @addrs; foreach (@mailboxes) { my $original = $_; my @comments = /($comment)/go; s/$comment//go if @comments; my ($user, $host, $com); ($user, $host) = ($1, $2) if s/<($local_part)\@($domain)>//o; if (! defined($user) || ! defined($host)) { s/($local_part)\@($domain)//o; ($user, $host) = ($1, $2); } next if $user =~ /\P{ASCII}/; next if $host =~ /\P{ASCII}/; my ($phrase) = /($display_name)/o; for ( $phrase, $host, $user, @comments ) { next unless defined $_; s/^\s+//; s/\s+$//; $_ = undef unless length $_; } my $new_comment = join q{ }, @comments; push @addrs, $class->new($phrase, "$user\@$host", $new_comment, $original); $addrs[-1]->[_IN_CACHE] = [ \$line, $#addrs ] } $class->__cache_parse($line, \@addrs); return @addrs; } sub new { my ($class, $phrase, $email, $comment, $orig) = @_; $phrase =~ s/\A"(.+)"\z/$1/ if $phrase; bless [ $phrase, $email, $comment, $orig ] => $class; } sub purge_cache { %NAME_CACHE = (); %FORMAT_CACHE = (); %PARSE_CACHE = (); } sub disable_cache { my ($class) = @_; $class->purge_cache; $NOCACHE = 1; } sub enable_cache { $NOCACHE = undef; } BEGIN { my %_INDEX = ( phrase => _PHRASE, address => _ADDRESS, comment => _COMMENT, original => _ORIGINAL, ); for my $method (keys %_INDEX) { no strict 'refs'; my $index = $_INDEX{ $method }; *$method = sub { if ($_[1]) { if ($_[0][_IN_CACHE]) { my $replicant = bless [ @{$_[0]} ] => ref $_[0]; $PARSE_CACHE{ ${ $_[0][_IN_CACHE][0] } }[ $_[0][_IN_CACHE][1] ] = $replicant; $_[0][_IN_CACHE] = undef; } $_[0]->[ $index ] = $_[1]; } else { $_[0]->[ $index ]; } }; } } sub host { ($_[0]->[_ADDRESS] =~ /\@($domain)/o)[0] } sub user { ($_[0]->[_ADDRESS] =~ /($local_part)\@/o)[0] } sub format { my $cache_str = do { no warnings 'uninitialized'; "@{$_[0]}" }; return $FORMAT_CACHE{$cache_str} if exists $FORMAT_CACHE{$cache_str}; $FORMAT_CACHE{$cache_str} = $_[0]->_format; } sub _format { my ($self) = @_; unless ( defined $self->[_PHRASE] && length $self->[_PHRASE] || defined $self->[_COMMENT] && length $self->[_COMMENT] ) { return $self->[_ADDRESS]; } my $format = sprintf q{%s <%s> %s}, $self->_enquoted_phrase, (defined $self->[_ADDRESS] ? $self->[_ADDRESS] : ''), (defined $self->[_COMMENT] ? $self->[_COMMENT] : ''); $format =~ s/^\s+//; $format =~ s/\s+$//; return $format; } sub _enquoted_phrase { my ($self) = @_; my $phrase = $self->[_PHRASE]; return '' unless defined $phrase; # if it's encoded -- rjbs, 2007-02-28 return $phrase if $phrase =~ /\A=\?.+\?=\z/; $phrase =~ s/\A"(.+)"\z/$1/; $phrase =~ s/([\\"])/\\$1/g; return qq{"$phrase"}; } sub name { my $cache_str = do { no warnings 'uninitialized'; "@{$_[0]}" }; return $NAME_CACHE{$cache_str} if exists $NAME_CACHE{$cache_str}; my ($self) = @_; my $name = q{}; if ( $name = $self->[_PHRASE] ) { $name =~ s/^"//; $name =~ s/"$//; $name =~ s/($quoted_pair)/substr $1, -1/goe; } elsif ( $name = $self->[_COMMENT] ) { $name =~ s/^\(//; $name =~ s/\)$//; $name =~ s/($quoted_pair)/substr $1, -1/goe; $name =~ s/$comment/ /go; } else { ($name) = $self->[_ADDRESS] =~ /($local_part)\@/o; } $NAME_CACHE{$cache_str} = $name; } sub as_string { warn 'altering $Email::Address::STRINGIFY is deprecated; subclass instead' if $STRINGIFY ne 'format'; $_[0]->can($STRINGIFY)->($_[0]); } use overload '""' => 'as_string', fallback => 1; 1; __END__ =pod =head1 NAME Email::Address - RFC 2822 Address Parsing and Creation =head1 VERSION version 1.900 =head1 SYNOPSIS use Email::Address; my @addresses = Email::Address->parse($line); my $address = Email::Address->new(Casey => 'casey@localhost'); print $address->format; =head1 DESCRIPTION This class implements a regex-based RFC 2822 parser that locates email addresses in strings and returns a list of C objects found. Alternatively you may construct objects manually. The goal of this software is to be correct, and very very fast. =head2 Package Variables B Email isn't easy (if even possible) to parse with a regex, I if you're on a C prior to 5.10.0. Providing regular expressions for use by other programs isn't a great idea, because it makes it hard to improve the parser without breaking the "it's a regex" feature. Using these regular expressions is not encouraged, and methods like C<< Email::Address->is_addr_spec >> should be provided in the future. Several regular expressions used in this package are useful to others. For convenience, these variables are declared as package variables that you may access from your program. These regular expressions conform to the rules specified in RFC 2822. You can access these variables using the full namespace. If you want short names, define them yourself. my $addr_spec = $Email::Address::addr_spec; =over 4 =item $Email::Address::addr_spec This regular expression defined what an email address is allowed to look like. =item $Email::Address::angle_addr This regular expression defines an C<$addr_spec> wrapped in angle brackets. =item $Email::Address::name_addr This regular expression defines what an email address can look like with an optional preceding display name, also known as the C. =item $Email::Address::mailbox This is the complete regular expression defining an RFC 2822 email address with an optional preceding display name and optional following comment. =back =head2 Class Methods =over =item parse my @addrs = Email::Address->parse( q[me@local, Casey , "Casey" (West)] ); This method returns a list of C objects it finds in the input string. B that it returns a list, and expects that it may find multiple addresses. The behavior in scalar context is undefined. The specification for an email address allows for infinitely nestable comments. That's nice in theory, but a little over done. By default this module allows for two (C<2>) levels of nested comments. If you think you need more, modify the C<$Email::Address::COMMENT_NEST_LEVEL> package variable to allow more. $Email::Address::COMMENT_NEST_LEVEL = 10; # I'm deep The reason for this hardly-limiting limitation is simple: efficiency. Long strings of whitespace can be problematic for this module to parse, a bug which has not yet been adequately addressed. The default behavior is now to collapse multiple spaces into a single space, which avoids this problem. To prevent this behavior, set C<$Email::Address::COLLAPSE_SPACES> to zero. This variable will go away when the bug is resolved properly. In accordance with RFC 822 and its descendants, this module demands that email addresses be ASCII only. Any non-ASCII content in the parsed addresses will cause the parser to return no results. =item new my $address = Email::Address->new(undef, 'casey@local'); my $address = Email::Address->new('Casey West', 'casey@local'); my $address = Email::Address->new(undef, 'casey@local', '(Casey)'); Constructs and returns a new C object. Takes four positional arguments: phrase, email, and comment, and original string. The original string should only really be set using C. =item purge_cache Email::Address->purge_cache; One way this module stays fast is with internal caches. Caches live in memory and there is the remote possibility that you will have a memory problem. On the off chance that you think you're one of those people, this class method will empty those caches. I've loaded over 12000 objects and not encountered a memory problem. =item disable_cache =item enable_cache Email::Address->disable_cache if memory_low(); If you'd rather not cache address parses at all, you can disable (and re-enable) the Email::Address cache with these methods. The cache is enabled by default. =back =head2 Instance Methods =over 4 =item phrase my $phrase = $address->phrase; $address->phrase( "Me oh my" ); Accessor and mutator for the phrase portion of an address. =item address my $addr = $address->address; $addr->address( "me@PROTECTED.com" ); Accessor and mutator for the address portion of an address. =item comment my $comment = $address->comment; $address->comment( "(Work address)" ); Accessor and mutator for the comment portion of an address. =item original my $orig = $address->original; Accessor for the original address found when parsing, or passed to C. =item host my $host = $address->host; Accessor for the host portion of an address's address. =item user my $user = $address->user; Accessor for the user portion of an address's address. =item format my $printable = $address->format; Returns a properly formatted RFC 2822 address representing the object. =item name my $name = $address->name; This method tries very hard to determine the name belonging to the address. First the C is checked. If that doesn't work out the C is looked into. If that still doesn't work out, the C portion of the C
is returned. This method does B try to massage any name it identifies and instead leaves that up to someone else. Who is it to decide if someone wants their name capitalized, or if they're Irish? =back =head2 Overloaded Operators =over 4 =item stringify print "I have your email address, $address."; Objects stringify to C by default. It's possible that you don't like that idea. Okay, then, you can change it by modifying C<$Email:Address::STRINGIFY>. Please consider modifying this package variable using C. You might step on someone else's toes if you don't. { local $Email::Address::STRINGIFY = 'host'; print "I have your address, $address."; # geeknest.com } print "I have your address, $address."; # "Casey West" Modifying this package variable is now deprecated. Subclassing is now the recommended approach. =back =head2 Did I Mention Fast? On his 1.8GHz Apple MacBook, rjbs gets these results: $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 5 Rate Mail::Address Email::Address Mail::Address 2.59/s -- -44% Email::Address 4.59/s 77% -- $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 25 Rate Mail::Address Email::Address Mail::Address 2.58/s -- -67% Email::Address 7.84/s 204% -- $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 50 Rate Mail::Address Email::Address Mail::Address 2.57/s -- -70% Email::Address 8.53/s 232% -- ...unfortunately, a known bug causes a loss of speed the string to parse has certain known characteristics, and disabling cache will also degrade performance. =head1 VERSION version 1.898 =head1 ACKNOWLEDGEMENTS Thanks to Kevin Riggle and Tatsuhiko Miyagawa for tests for annoying phrase-quoting bugs! =head1 AUTHORS =over 4 =item * Casey West =item * Ricardo SIGNES =back =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2004 by Casey West. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut release000755000766000766 012200763437 15234 5ustar00rjbsrjbs000000000000Email-Address-1.900/xtpod-syntax.t100644000766000766 21212200763437 17642 0ustar00rjbsrjbs000000000000Email-Address-1.900/xt/release#!perl use Test::More; eval "use Test::Pod 1.41"; plan skip_all => "Test::Pod 1.41 required for testing POD" if $@; all_pod_files_ok(); 000-report-versions-tiny.t100644000766000766 454312200763437 20416 0ustar00rjbsrjbs000000000000Email-Address-1.900/tuse strict; use warnings; use Test::More 0.88; # This is a relatively nice way to avoid Test::NoWarnings breaking our # expectations by adding extra tests, without using no_plan. It also helps # avoid any other test module that feels introducing random tests, or even # test plans, is a nice idea. our $success = 0; END { $success && done_testing; } # List our own version used to generate this my $v = "\nGenerated by Dist::Zilla::Plugin::ReportVersions::Tiny v1.09\n"; eval { # no excuses! # report our Perl details my $want = "any version"; $v .= "perl: $] (wanted $want) on $^O from $^X\n\n"; }; defined($@) and diag("$@"); # Now, our module version dependencies: sub pmver { my ($module, $wanted) = @_; $wanted = " (want $wanted)"; my $pmver; eval "require $module;"; if ($@) { if ($@ =~ m/Can't locate .* in \@INC/) { $pmver = 'module not found.'; } else { diag("${module}: $@"); $pmver = 'died during require.'; } } else { my $version; eval { $version = $module->VERSION; }; if ($@) { diag("${module}: $@"); $pmver = 'died during VERSION check.'; } elsif (defined $version) { $pmver = "$version"; } else { $pmver = ''; } } # So, we should be good, right? return sprintf('%-45s => %-10s%-15s%s', $module, $pmver, $wanted, "\n"); } eval { $v .= pmver('Capture::Tiny','any version') }; eval { $v .= pmver('Encode','any version') }; eval { $v .= pmver('Encode::MIME::Header','any version') }; eval { $v .= pmver('ExtUtils::MakeMaker','6.30') }; eval { $v .= pmver('Test::More','0.96') }; eval { $v .= pmver('Test::Pod','1.41') }; eval { $v .= pmver('blib','any version') }; eval { $v .= pmver('overload','any version') }; eval { $v .= pmver('strict','any version') }; eval { $v .= pmver('version','0.9901') }; eval { $v .= pmver('warnings','any version') }; # All done. $v .= <<'EOT'; Thanks for using my code. I hope it works for you. If not, please try and include this output in the bug report. That will help me reproduce the issue and solve your problem. EOT diag($v); ok(1, "we really didn't test anything, just reporting data"); $success = 1; # Work around another nasty module on CPAN. :/ no warnings 'once'; $Template::Test::NO_FLUSH = 1; exit 0; changes_has_content.t100644000766000766 201112200763437 21550 0ustar00rjbsrjbs000000000000Email-Address-1.900/xt/release#!perl use Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '1.900'; my $trial_token = '-TRIAL'; SKIP: { ok(-e $changes_file, "$changes_file file exists") or skip 'Changes is missing', 1; ok(_get_changes($newver), "$changes_file has content for $newver"); } done_testing; # _get_changes copied and adapted from Dist::Zilla::Plugin::Git::Commit # by Jerome Quelin sub _get_changes { my $newver = shift; # parse changelog to find commit message open(my $fh, '<', $changes_file) or die "cannot open $changes_file: $!"; my $changelog = join('', <$fh>); close $fh; my @content = grep { /^$newver(?:$trial_token)?(?:\s+|$)/ ... /^\S/ } # from newver to un-indented split /\n/, $changelog; shift @content; # drop the version line # drop unindented last line and trailing blank lines pop @content while ( @content && $content[-1] =~ /^(?:\S|\s*$)/ ); # return number of non-blank lines return scalar @content; }