Email-Address-1.913/000755 000765 000024 00000000000 14357132066 014253 5ustar00rjbsstaff000000 000000 Email-Address-1.913/bench/000755 000765 000024 00000000000 14357132066 015332 5ustar00rjbsstaff000000 000000 Email-Address-1.913/LICENSE000644 000765 000024 00000043642 14357132066 015271 0ustar00rjbsstaff000000 000000 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. 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, Fifth Floor, Boston, MA 02110-1301 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 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. The End Email-Address-1.913/Changes000644 000765 000024 00000015711 14357132066 015553 0ustar00rjbsstaff000000 000000 Release history for Email-Address 1.913 2023-01-09 19:41:25-05:00 America/New_York - as ever, you should probably use Email::Address::XS instead - this version now requires Perl v5.12 - some small tweaks to the code to take advantage of v5.12 made - update distribution metadata 1.912 2018-12-31 13:46:22-05:00 America/New_York - include the doc updates from 1.911 changelog, oops! 1.911 2018-12-22 11:30:28-05:00 America/New_York - just like 1.910, but with doc updates and undeprecation by Jim Brandt 1.910 2018-12-17 21:27:28-05:00 America/New_York (TRIAL RELEASE) - update parsing to mitigate pathological cases (thanks, sunnavy!) 1.909 2018-03-04 22:07:12-05:00 America/New_York - add some docs saying "don't use this, it can be busted" 1.908 2015-09-19 22:53:38-04:00 America/New_York - default to 1 level of nested comments to avoid pathological behaviors 1.907 2015-02-03 17:48:10-05:00 America/New_York - restore 5.8.x compatibility 1.906 2015-02-03 16:48:11-05:00 America/New_York - the test suite tests parses more directly, which eliminates a number of misleading (and possibly wrong) test cases - escaped characters in a quoted string are now properly unescaped for the ->phrase method, which means things should round trip better from their decomposed form 1.905 2014-06-17 22:55:00-04:00 America/New_York - additional change to avoid slowdown; this addresses CVE-2014-0477 change provided by Bastian Blank 1.904 2014-06-14 00:21:21-04:00 America/New_York (TRIAL RELEASE) - avoid being fooled by an addr-like string in the phrase - avoid a slowdown by avoiding backtracking into the phrase 1.903 2014-04-17 21:02:14-04:00 America/New_York - correctly parenthesize false comment "0" (sigh) 1.902 2014-04-17 10:45:11-04:00 America/New_York - when formatting an address where phrase is empty but comment is not, do not include "" for the phrase; just omit it - when formatting and address where comment lacks enclosing parens, add them 1.901 2014-01-28 22:41:54-05:00 America/New_York further avoidance of stringifying to undef (thanks, this time, to David Golden) 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. Email-Address-1.913/MANIFEST000644 000765 000024 00000000712 14357132066 015404 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.030. Changes 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-report-prereqs.dd t/00-report-prereqs.t t/ascii.t t/cache-cow.t t/comma-free.t t/format.t t/order.t t/pathological.t t/patterns.t t/quote-encoded.t t/quoting.t t/tests.t xt/author/pod-syntax.t xt/release/changes_has_content.t Email-Address-1.913/t/000755 000765 000024 00000000000 14357132066 014516 5ustar00rjbsstaff000000 000000 Email-Address-1.913/xt/000755 000765 000024 00000000000 14357132066 014706 5ustar00rjbsstaff000000 000000 Email-Address-1.913/README000644 000765 000024 00000000562 14357132066 015136 0ustar00rjbsstaff000000 000000 This archive contains the distribution Email-Address, version 1.913: 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. This README file was generated by Dist::Zilla::Plugin::Readme v6.030. Email-Address-1.913/META.yml000644 000765 000024 00000030146 14357132066 015530 0ustar00rjbsstaff000000 000000 --- abstract: 'RFC 2822 Address Parsing and Creation' author: - 'Casey West' - 'Ricardo SIGNES ' build_requires: Encode: '0' Encode::MIME::Header: '0' ExtUtils::MakeMaker: '0' File::Spec: '0' Test::More: '0.96' Time::HiRes: '0' configure_requires: ExtUtils::MakeMaker: '6.78' dynamic_config: 0 generated_by: 'Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html version: '1.4' name: Email-Address requires: overload: '0' perl: '5.012' strict: '0' warnings: '0' resources: bugtracker: https://github.com/Perl-Email-Project/Email-Address/issues homepage: https://github.com/Perl-Email-Project/Email-Address repository: https://github.com/Perl-Email-Project/Email-Address.git version: '1.913' x_Dist_Zilla: perl: version: '5.037002' plugins: - class: Dist::Zilla::Plugin::Git::GatherDir config: Dist::Zilla::Plugin::GatherDir: exclude_filename: [] exclude_match: [] follow_symlinks: 0 include_dotfiles: 0 prefix: '' prune_directory: [] root: . Dist::Zilla::Plugin::Git::GatherDir: include_untracked: 0 name: '@RJBS/Git::GatherDir' version: '2.048' - class: Dist::Zilla::Plugin::CheckPrereqsIndexed name: '@RJBS/CheckPrereqsIndexed' version: '0.021' - class: Dist::Zilla::Plugin::CheckExtraTests name: '@RJBS/CheckExtraTests' version: '0.029' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 0 check_all_prereqs: 0 modules: - Dist::Zilla::PluginBundle::RJBS phase: build run_under_travis: 0 skip: [] name: '@RJBS/RJBS-Outdated' version: '0.057' - class: Dist::Zilla::Plugin::PromptIfStale config: Dist::Zilla::Plugin::PromptIfStale: check_all_plugins: 1 check_all_prereqs: 0 modules: [] phase: release run_under_travis: 0 skip: - Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/CPAN-Outdated' version: '0.057' - class: Dist::Zilla::Plugin::PruneCruft name: '@RJBS/@Filter/PruneCruft' version: '6.030' - class: Dist::Zilla::Plugin::ManifestSkip name: '@RJBS/@Filter/ManifestSkip' version: '6.030' - class: Dist::Zilla::Plugin::MetaYAML name: '@RJBS/@Filter/MetaYAML' version: '6.030' - class: Dist::Zilla::Plugin::License name: '@RJBS/@Filter/License' version: '6.030' - class: Dist::Zilla::Plugin::Readme name: '@RJBS/@Filter/Readme' version: '6.030' - class: Dist::Zilla::Plugin::ExecDir name: '@RJBS/@Filter/ExecDir' version: '6.030' - class: Dist::Zilla::Plugin::ShareDir name: '@RJBS/@Filter/ShareDir' version: '6.030' - class: Dist::Zilla::Plugin::Manifest name: '@RJBS/@Filter/Manifest' version: '6.030' - class: Dist::Zilla::Plugin::TestRelease name: '@RJBS/@Filter/TestRelease' version: '6.030' - class: Dist::Zilla::Plugin::ConfirmRelease name: '@RJBS/@Filter/ConfirmRelease' version: '6.030' - class: Dist::Zilla::Plugin::UploadToCPAN name: '@RJBS/@Filter/UploadToCPAN' version: '6.030' - class: Dist::Zilla::Plugin::MakeMaker config: Dist::Zilla::Role::TestRunner: default_jobs: 9 name: '@RJBS/MakeMaker' version: '6.030' - class: Dist::Zilla::Plugin::AutoPrereqs name: '@RJBS/AutoPrereqs' version: '6.030' - class: Dist::Zilla::Plugin::Git::NextVersion config: Dist::Zilla::Plugin::Git::NextVersion: first_version: '0.001' version_by_branch: 1 version_regexp: (?^:^([0-9]+\.[0-9]+)$) Dist::Zilla::Role::Git::Repo: git_version: 2.38.0 repo_root: . name: '@RJBS/Git::NextVersion' version: '2.048' - class: Dist::Zilla::Plugin::PkgVersion name: '@RJBS/PkgVersion' version: '6.030' - class: Dist::Zilla::Plugin::MetaConfig name: '@RJBS/MetaConfig' version: '6.030' - class: Dist::Zilla::Plugin::MetaJSON name: '@RJBS/MetaJSON' version: '6.030' - class: Dist::Zilla::Plugin::NextRelease name: '@RJBS/NextRelease' version: '6.030' - class: Dist::Zilla::Plugin::Test::ChangesHasContent name: '@RJBS/Test::ChangesHasContent' version: '0.011' - class: Dist::Zilla::Plugin::PodSyntaxTests name: '@RJBS/PodSyntaxTests' version: '6.030' - class: Dist::Zilla::Plugin::Test::ReportPrereqs name: '@RJBS/Test::ReportPrereqs' version: '0.029' - class: Dist::Zilla::Plugin::Git::Remote::Check name: '@RJBS/Git::Remote::Check' version: 0.1.2 - class: Dist::Zilla::Plugin::Prereqs config: Dist::Zilla::Plugin::Prereqs: phase: test type: requires name: '@RJBS/TestMoreWithSubtests' version: '6.030' - class: Dist::Zilla::Plugin::PodWeaver config: Dist::Zilla::Plugin::PodWeaver: config_plugins: - '@RJBS' finder: - ':InstallModules' - ':ExecFiles' plugins: - class: Pod::Weaver::Plugin::EnsurePod5 name: '@CorePrep/EnsurePod5' version: '4.018' - class: Pod::Weaver::Plugin::H1Nester name: '@CorePrep/H1Nester' version: '4.018' - class: Pod::Weaver::Plugin::SingleEncoding name: '@RJBS/SingleEncoding' version: '4.018' - class: Pod::Weaver::Section::Name name: '@RJBS/Name' version: '4.018' - class: Pod::Weaver::Section::Version name: '@RJBS/Version' version: '4.018' - class: Pod::Weaver::Section::Region name: '@RJBS/Prelude' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Synopsis' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Description' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Overview' version: '4.018' - class: Pod::Weaver::Section::Generic name: '@RJBS/Stability' version: '4.018' - class: Pod::Weaver::Section::GenerateSection name: '@RJBS/PerlSupport' version: '4.018' - class: Pod::Weaver::Section::Collect name: Attributes version: '4.018' - class: Pod::Weaver::Section::Collect name: Methods version: '4.018' - class: Pod::Weaver::Section::Collect name: Functions version: '4.018' - class: Pod::Weaver::Section::Leftovers name: '@RJBS/Leftovers' version: '4.018' - class: Pod::Weaver::Section::Region name: '@RJBS/postlude' version: '4.018' - class: Pod::Weaver::Section::Authors name: '@RJBS/Authors' version: '4.018' - class: Pod::Weaver::Section::Contributors name: '@RJBS/Contributors' version: '0.009' - class: Pod::Weaver::Section::Legal name: '@RJBS/Legal' version: '4.018' - class: Pod::Weaver::Plugin::Transformer name: '@RJBS/List' version: '4.018' name: '@RJBS/PodWeaver' version: '4.009' - class: Dist::Zilla::Plugin::RJBSMisc name: '@RJBS/RJBSMisc' version: '5.023' - class: Dist::Zilla::Plugin::GithubMeta name: '@RJBS/GithubMeta' version: '0.58' - class: Dist::Zilla::Plugin::Git::Check config: Dist::Zilla::Plugin::Git::Check: untracked_files: die Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.38.0 repo_root: . name: '@RJBS/@Git/Check' version: '2.048' - class: Dist::Zilla::Plugin::Git::Commit config: Dist::Zilla::Plugin::Git::Commit: add_files_in: [] commit_msg: v%V%n%n%c signoff: 0 Dist::Zilla::Role::Git::DirtyFiles: allow_dirty: - Changes - dist.ini allow_dirty_match: [] changelog: Changes Dist::Zilla::Role::Git::Repo: git_version: 2.38.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Commit' version: '2.048' - class: Dist::Zilla::Plugin::Git::Tag config: Dist::Zilla::Plugin::Git::Tag: branch: ~ changelog: Changes signed: 0 tag: '1.913' tag_format: '%v' tag_message: v%V Dist::Zilla::Role::Git::Repo: git_version: 2.38.0 repo_root: . Dist::Zilla::Role::Git::StringFormatter: time_zone: local name: '@RJBS/@Git/Tag' version: '2.048' - class: Dist::Zilla::Plugin::Git::Push config: Dist::Zilla::Plugin::Git::Push: push_to: - 'github :' remotes_must_exist: 0 Dist::Zilla::Role::Git::Repo: git_version: 2.38.0 repo_root: . name: '@RJBS/@Git/Push' version: '2.048' - class: Dist::Zilla::Plugin::Git::Contributors config: Dist::Zilla::Plugin::Git::Contributors: git_version: 2.38.0 include_authors: 0 include_releaser: 1 order_by: name paths: [] name: '@RJBS/Git::Contributors' version: '0.036' - class: Dist::Zilla::Plugin::FinderCode name: ':InstallModules' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':IncModules' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':TestFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':ExtraTestFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':ExecFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':PerlExecFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':ShareFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':MainModule' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':AllFiles' version: '6.030' - class: Dist::Zilla::Plugin::FinderCode name: ':NoFiles' version: '6.030' zilla: class: Dist::Zilla::Dist::Builder config: is_trial: 0 version: '6.030' x_contributors: - 'Alex Vandiver ' - 'David Golden ' - 'David Steinbrunner ' - 'Glenn Fowler ' - 'Jim Brandt ' - 'Kevin Falcone ' - 'Pali ' - 'Ricardo Signes ' - 'Ruslan Zakirov ' - 'sunnavy ' - 'William Yardley ' x_generated_by_perl: v5.37.2 x_rjbs_perl_window: long-term x_serialization_backend: 'YAML::Tiny version 1.73' x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later' Email-Address-1.913/lib/000755 000765 000024 00000000000 14357132066 015021 5ustar00rjbsstaff000000 000000 Email-Address-1.913/Makefile.PL000644 000765 000024 00000002573 14357132066 016234 0ustar00rjbsstaff000000 000000 # This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.030. use strict; use warnings; use 5.012; use ExtUtils::MakeMaker 6.78; my %WriteMakefileArgs = ( "ABSTRACT" => "RFC 2822 Address Parsing and Creation", "AUTHOR" => "Casey West, Ricardo SIGNES ", "CONFIGURE_REQUIRES" => { "ExtUtils::MakeMaker" => "6.78" }, "DISTNAME" => "Email-Address", "LICENSE" => "perl", "MIN_PERL_VERSION" => "5.012", "NAME" => "Email::Address", "PREREQ_PM" => { "overload" => 0, "strict" => 0, "warnings" => 0 }, "TEST_REQUIRES" => { "Encode" => 0, "Encode::MIME::Header" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "Test::More" => "0.96", "Time::HiRes" => 0 }, "VERSION" => "1.913", "test" => { "TESTS" => "t/*.t" } ); my %FallbackPrereqs = ( "Encode" => 0, "Encode::MIME::Header" => 0, "ExtUtils::MakeMaker" => 0, "File::Spec" => 0, "Test::More" => "0.96", "Time::HiRes" => 0, "overload" => 0, "strict" => 0, "warnings" => 0 ); unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) { delete $WriteMakefileArgs{TEST_REQUIRES}; delete $WriteMakefileArgs{BUILD_REQUIRES}; $WriteMakefileArgs{PREREQ_PM} = \%FallbackPrereqs; } delete $WriteMakefileArgs{CONFIGURE_REQUIRES} unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); Email-Address-1.913/META.json000644 000765 000024 00000045440 14357132066 015703 0ustar00rjbsstaff000000 000000 { "abstract" : "RFC 2822 Address Parsing and Creation", "author" : [ "Casey West", "Ricardo SIGNES " ], "dynamic_config" : 0, "generated_by" : "Dist::Zilla version 6.030, CPAN::Meta::Converter version 2.150010", "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.78" } }, "develop" : { "requires" : { "Encode" : "0", "Test::More" : "0", "Test::Pod" : "1.41" } }, "runtime" : { "requires" : { "overload" : "0", "perl" : "5.012", "strict" : "0", "warnings" : "0" } }, "test" : { "recommends" : { "CPAN::Meta" : "2.120900" }, "requires" : { "Encode" : "0", "Encode::MIME::Header" : "0", "ExtUtils::MakeMaker" : "0", "File::Spec" : "0", "Test::More" : "0.96", "Time::HiRes" : "0" } } }, "release_status" : "stable", "resources" : { "bugtracker" : { "web" : "https://github.com/Perl-Email-Project/Email-Address/issues" }, "homepage" : "https://github.com/Perl-Email-Project/Email-Address", "repository" : { "type" : "git", "url" : "https://github.com/Perl-Email-Project/Email-Address.git", "web" : "https://github.com/Perl-Email-Project/Email-Address" } }, "version" : "1.913", "x_Dist_Zilla" : { "perl" : { "version" : "5.037002" }, "plugins" : [ { "class" : "Dist::Zilla::Plugin::Git::GatherDir", "config" : { "Dist::Zilla::Plugin::GatherDir" : { "exclude_filename" : [], "exclude_match" : [], "follow_symlinks" : 0, "include_dotfiles" : 0, "prefix" : "", "prune_directory" : [], "root" : "." }, "Dist::Zilla::Plugin::Git::GatherDir" : { "include_untracked" : 0 } }, "name" : "@RJBS/Git::GatherDir", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed", "name" : "@RJBS/CheckPrereqsIndexed", "version" : "0.021" }, { "class" : "Dist::Zilla::Plugin::CheckExtraTests", "name" : "@RJBS/CheckExtraTests", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 0, "check_all_prereqs" : 0, "modules" : [ "Dist::Zilla::PluginBundle::RJBS" ], "phase" : "build", "run_under_travis" : 0, "skip" : [] } }, "name" : "@RJBS/RJBS-Outdated", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PromptIfStale", "config" : { "Dist::Zilla::Plugin::PromptIfStale" : { "check_all_plugins" : 1, "check_all_prereqs" : 0, "modules" : [], "phase" : "release", "run_under_travis" : 0, "skip" : [ "Dist::Zilla::Plugin::RJBSMisc" ] } }, "name" : "@RJBS/CPAN-Outdated", "version" : "0.057" }, { "class" : "Dist::Zilla::Plugin::PruneCruft", "name" : "@RJBS/@Filter/PruneCruft", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::ManifestSkip", "name" : "@RJBS/@Filter/ManifestSkip", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::MetaYAML", "name" : "@RJBS/@Filter/MetaYAML", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::License", "name" : "@RJBS/@Filter/License", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::Readme", "name" : "@RJBS/@Filter/Readme", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::ExecDir", "name" : "@RJBS/@Filter/ExecDir", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::ShareDir", "name" : "@RJBS/@Filter/ShareDir", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::Manifest", "name" : "@RJBS/@Filter/Manifest", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::TestRelease", "name" : "@RJBS/@Filter/TestRelease", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::ConfirmRelease", "name" : "@RJBS/@Filter/ConfirmRelease", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::UploadToCPAN", "name" : "@RJBS/@Filter/UploadToCPAN", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::MakeMaker", "config" : { "Dist::Zilla::Role::TestRunner" : { "default_jobs" : 9 } }, "name" : "@RJBS/MakeMaker", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::AutoPrereqs", "name" : "@RJBS/AutoPrereqs", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::Git::NextVersion", "config" : { "Dist::Zilla::Plugin::Git::NextVersion" : { "first_version" : "0.001", "version_by_branch" : 1, "version_regexp" : "(?^:^([0-9]+\\.[0-9]+)$)" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.38.0", "repo_root" : "." } }, "name" : "@RJBS/Git::NextVersion", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::PkgVersion", "name" : "@RJBS/PkgVersion", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::MetaConfig", "name" : "@RJBS/MetaConfig", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::MetaJSON", "name" : "@RJBS/MetaJSON", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::NextRelease", "name" : "@RJBS/NextRelease", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::Test::ChangesHasContent", "name" : "@RJBS/Test::ChangesHasContent", "version" : "0.011" }, { "class" : "Dist::Zilla::Plugin::PodSyntaxTests", "name" : "@RJBS/PodSyntaxTests", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs", "name" : "@RJBS/Test::ReportPrereqs", "version" : "0.029" }, { "class" : "Dist::Zilla::Plugin::Git::Remote::Check", "name" : "@RJBS/Git::Remote::Check", "version" : "0.1.2" }, { "class" : "Dist::Zilla::Plugin::Prereqs", "config" : { "Dist::Zilla::Plugin::Prereqs" : { "phase" : "test", "type" : "requires" } }, "name" : "@RJBS/TestMoreWithSubtests", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::PodWeaver", "config" : { "Dist::Zilla::Plugin::PodWeaver" : { "config_plugins" : [ "@RJBS" ], "finder" : [ ":InstallModules", ":ExecFiles" ], "plugins" : [ { "class" : "Pod::Weaver::Plugin::EnsurePod5", "name" : "@CorePrep/EnsurePod5", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::H1Nester", "name" : "@CorePrep/H1Nester", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::SingleEncoding", "name" : "@RJBS/SingleEncoding", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Name", "name" : "@RJBS/Name", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Version", "name" : "@RJBS/Version", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/Prelude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Synopsis", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Description", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Overview", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Generic", "name" : "@RJBS/Stability", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::GenerateSection", "name" : "@RJBS/PerlSupport", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Attributes", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Methods", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Collect", "name" : "Functions", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Leftovers", "name" : "@RJBS/Leftovers", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Region", "name" : "@RJBS/postlude", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Authors", "name" : "@RJBS/Authors", "version" : "4.018" }, { "class" : "Pod::Weaver::Section::Contributors", "name" : "@RJBS/Contributors", "version" : "0.009" }, { "class" : "Pod::Weaver::Section::Legal", "name" : "@RJBS/Legal", "version" : "4.018" }, { "class" : "Pod::Weaver::Plugin::Transformer", "name" : "@RJBS/List", "version" : "4.018" } ] } }, "name" : "@RJBS/PodWeaver", "version" : "4.009" }, { "class" : "Dist::Zilla::Plugin::RJBSMisc", "name" : "@RJBS/RJBSMisc", "version" : "5.023" }, { "class" : "Dist::Zilla::Plugin::GithubMeta", "name" : "@RJBS/GithubMeta", "version" : "0.58" }, { "class" : "Dist::Zilla::Plugin::Git::Check", "config" : { "Dist::Zilla::Plugin::Git::Check" : { "untracked_files" : "die" }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.38.0", "repo_root" : "." } }, "name" : "@RJBS/@Git/Check", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Commit", "config" : { "Dist::Zilla::Plugin::Git::Commit" : { "add_files_in" : [], "commit_msg" : "v%V%n%n%c", "signoff" : 0 }, "Dist::Zilla::Role::Git::DirtyFiles" : { "allow_dirty" : [ "Changes", "dist.ini" ], "allow_dirty_match" : [], "changelog" : "Changes" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.38.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Commit", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Tag", "config" : { "Dist::Zilla::Plugin::Git::Tag" : { "branch" : null, "changelog" : "Changes", "signed" : 0, "tag" : "1.913", "tag_format" : "%v", "tag_message" : "v%V" }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.38.0", "repo_root" : "." }, "Dist::Zilla::Role::Git::StringFormatter" : { "time_zone" : "local" } }, "name" : "@RJBS/@Git/Tag", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Push", "config" : { "Dist::Zilla::Plugin::Git::Push" : { "push_to" : [ "github :" ], "remotes_must_exist" : 0 }, "Dist::Zilla::Role::Git::Repo" : { "git_version" : "2.38.0", "repo_root" : "." } }, "name" : "@RJBS/@Git/Push", "version" : "2.048" }, { "class" : "Dist::Zilla::Plugin::Git::Contributors", "config" : { "Dist::Zilla::Plugin::Git::Contributors" : { "git_version" : "2.38.0", "include_authors" : 0, "include_releaser" : 1, "order_by" : "name", "paths" : [] } }, "name" : "@RJBS/Git::Contributors", "version" : "0.036" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":InstallModules", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":IncModules", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":TestFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExtraTestFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ExecFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":PerlExecFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":ShareFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":MainModule", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":AllFiles", "version" : "6.030" }, { "class" : "Dist::Zilla::Plugin::FinderCode", "name" : ":NoFiles", "version" : "6.030" } ], "zilla" : { "class" : "Dist::Zilla::Dist::Builder", "config" : { "is_trial" : 0 }, "version" : "6.030" } }, "x_contributors" : [ "Alex Vandiver ", "David Golden ", "David Steinbrunner ", "Glenn Fowler ", "Jim Brandt ", "Kevin Falcone ", "Pali ", "Ricardo Signes ", "Ruslan Zakirov ", "sunnavy ", "William Yardley " ], "x_generated_by_perl" : "v5.37.2", "x_rjbs_perl_window" : "long-term", "x_serialization_backend" : "Cpanel::JSON::XS version 4.30", "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later" } Email-Address-1.913/dist.ini000644 000765 000024 00000000306 14357132066 015716 0ustar00rjbsstaff000000 000000 name = Email-Address author = Casey West author = Ricardo SIGNES license = Perl_5 copyright_holder = Casey West copyright_year = 2004 [@RJBS] perl-window = long-term Email-Address-1.913/lib/Email/000755 000765 000024 00000000000 14357132066 016050 5ustar00rjbsstaff000000 000000 Email-Address-1.913/lib/Email/Address.pm000644 000765 000024 00000063661 14357132066 020007 0ustar00rjbsstaff000000 000000 use v5.12.0; use warnings; package Email::Address 1.913; # ABSTRACT: RFC 2822 Address Parsing and Creation our $COMMENT_NEST_LEVEL ||= 1; our $STRINGIFY ||= 'format'; our $COLLAPSE_SPACES //= 1; #pod =head1 SYNOPSIS #pod #pod use Email::Address; #pod #pod my @addresses = Email::Address->parse($line); #pod my $address = Email::Address->new(Casey => 'casey@localhost'); #pod #pod print $address->format; #pod #pod =head1 DESCRIPTION #pod #pod This class implements a regex-based RFC 2822 parser that locates email #pod addresses in strings and returns a list of C objects found. #pod Alternatively you may construct objects manually. The goal of this software is #pod to be correct, and very very fast. #pod #pod Version 1.909 and earlier of this module had vulnerabilies #pod (L) #pod and (L) #pod which allowed specially constructed email to cause a denial of service. The #pod reported vulnerabilities and some other pathalogical cases (meaning they really #pod shouldn't occur in normal email) have been addressed in version 1.910 and newer. #pod If you're running version 1.909 or older, you should update! #pod #pod Alternatively, you could switch to L|Email::Address::XS> #pod which has a backward compatible API. B #pod #pod =cut 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; #pod =head2 Package Variables #pod #pod 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 #pod for use by other programs isn't a great idea, because it makes it hard to #pod improve the parser without breaking the "it's a regex" feature. Using these #pod regular expressions is not encouraged, and methods like C<< #pod Email::Address->is_addr_spec >> should be provided in the future. #pod #pod Several regular expressions used in this package are useful to others. #pod For convenience, these variables are declared as package variables that #pod you may access from your program. #pod #pod These regular expressions conform to the rules specified in RFC 2822. #pod #pod You can access these variables using the full namespace. If you want #pod short names, define them yourself. #pod #pod my $addr_spec = $Email::Address::addr_spec; #pod #pod =over 4 #pod #pod =item $Email::Address::addr_spec #pod #pod This regular expression defined what an email address is allowed to #pod look like. #pod #pod =item $Email::Address::angle_addr #pod #pod This regular expression defines an C<$addr_spec> wrapped in angle #pod brackets. #pod #pod =item $Email::Address::name_addr #pod #pod This regular expression defines what an email address can look like #pod with an optional preceding display name, also known as the C. #pod #pod =item $Email::Address::mailbox #pod #pod This is the complete regular expression defining an RFC 2822 email #pod address with an optional preceding display name and optional #pod following comment. #pod #pod =back #pod #pod =cut 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 } sub __dump { return { phrase => $_[0][_PHRASE], address => $_[0][_ADDRESS], comment => $_[0][_COMMENT], original => $_[0][_ORIGINAL], } } #pod =head2 Class Methods #pod #pod =over #pod #pod =item parse #pod #pod my @addrs = Email::Address->parse( #pod q[me@local, Casey , "Casey" (West)] #pod ); #pod #pod This method returns a list of C objects it finds in the input #pod string. B that it returns a list, and expects that it may find #pod multiple addresses. The behavior in scalar context is undefined. #pod #pod The specification for an email address allows for infinitely nestable comments. #pod That's nice in theory, but a little over done. By default this module allows #pod for one (C<1>) level of nested comments. If you think you need more, modify the #pod C<$Email::Address::COMMENT_NEST_LEVEL> package variable to allow more. #pod #pod $Email::Address::COMMENT_NEST_LEVEL = 10; # I'm deep #pod #pod The reason for this hardly-limiting limitation is simple: efficiency. #pod #pod Long strings of whitespace can be problematic for this module to parse, a bug #pod which has not yet been adequately addressed. The default behavior is now to #pod collapse multiple spaces into a single space, which avoids this problem. To #pod prevent this behavior, set C<$Email::Address::COLLAPSE_SPACES> to zero. This #pod variable will go away when the bug is resolved properly. #pod #pod In accordance with RFC 822 and its descendants, this module demands that email #pod addresses be ASCII only. Any non-ASCII content in the parsed addresses will #pod cause the parser to return no results. #pod #pod =cut 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; my $str = $line; $str =~ s!($name_addr(?>$comment*))!$mailboxes{pos($str)} = $1; ',' x length $1!ego if $str =~ /$angle_addr/; $str =~ s!($addr_spec(?>$comment*))!$mailboxes{pos($str)} = $1; ',' x length $1!ego; my @mailboxes = map { $mailboxes{$_} } sort { $a <=> $b } keys %mailboxes; 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)>\s*\z//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 $_; } $phrase =~ s/\\(.)/$1/g if $phrase; 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; } #pod =item new #pod #pod my $address = Email::Address->new(undef, 'casey@local'); #pod my $address = Email::Address->new('Casey West', 'casey@local'); #pod my $address = Email::Address->new(undef, 'casey@local', '(Casey)'); #pod #pod Constructs and returns a new C object. Takes four #pod positional arguments: phrase, email, and comment, and original string. #pod #pod The original string should only really be set using C. #pod #pod =cut sub new { my ($class, $phrase, $email, $comment, $orig) = @_; $phrase =~ s/\A"(.+)"\z/$1/ if $phrase; bless [ $phrase, $email, $comment, $orig ] => $class; } #pod =item purge_cache #pod #pod Email::Address->purge_cache; #pod #pod One way this module stays fast is with internal caches. Caches live #pod in memory and there is the remote possibility that you will have a #pod memory problem. On the off chance that you think you're one of those #pod people, this class method will empty those caches. #pod #pod I've loaded over 12000 objects and not encountered a memory problem. #pod #pod =cut sub purge_cache { %NAME_CACHE = (); %FORMAT_CACHE = (); %PARSE_CACHE = (); } #pod =item disable_cache #pod #pod =item enable_cache #pod #pod Email::Address->disable_cache if memory_low(); #pod #pod If you'd rather not cache address parses at all, you can disable (and #pod re-enable) the Email::Address cache with these methods. The cache is enabled #pod by default. #pod #pod =cut sub disable_cache { my ($class) = @_; $class->purge_cache; $NOCACHE = 1; } sub enable_cache { $NOCACHE = undef; } #pod =back #pod #pod =head2 Instance Methods #pod #pod =over 4 #pod #pod =item phrase #pod #pod my $phrase = $address->phrase; #pod $address->phrase( "Me oh my" ); #pod #pod Accessor and mutator for the phrase portion of an address. #pod #pod =item address #pod #pod my $addr = $address->address; #pod $addr->address( "me@PROTECTED.com" ); #pod #pod Accessor and mutator for the address portion of an address. #pod #pod =item comment #pod #pod my $comment = $address->comment; #pod $address->comment( "(Work address)" ); #pod #pod Accessor and mutator for the comment portion of an address. #pod #pod =item original #pod #pod my $orig = $address->original; #pod #pod Accessor for the original address found when parsing, or passed #pod to C. #pod #pod =item host #pod #pod my $host = $address->host; #pod #pod Accessor for the host portion of an address's address. #pod #pod =item user #pod #pod my $user = $address->user; #pod #pod Accessor for the user portion of an address's address. #pod #pod =cut 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] } #pod =pod #pod #pod =item format #pod #pod my $printable = $address->format; #pod #pod Returns a properly formatted RFC 2822 address representing the #pod object. #pod #pod =cut 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 (length $self->[_PHRASE] || length $self->[_COMMENT]) { return $self->[_ADDRESS] // ''; } my $comment = $self->[_COMMENT] // ''; $comment = "($comment)" if length $comment and $comment !~ /\A\(.*\)\z/; my $format = sprintf q{%s <%s> %s}, $self->_enquoted_phrase, ($self->[_ADDRESS] // ''), $comment; $format =~ s/^\s+//; $format =~ s/\s+$//; return $format; } sub _enquoted_phrase { my ($self) = @_; my $phrase = $self->[_PHRASE]; return '' unless length $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"}; } #pod =item name #pod #pod my $name = $address->name; #pod #pod This method tries very hard to determine the name belonging to the address. #pod First the C is checked. If that doesn't work out the C #pod is looked into. If that still doesn't work out, the C portion of #pod the C
is returned. #pod #pod This method does B try to massage any name it identifies and instead #pod leaves that up to someone else. Who is it to decide if someone wants their #pod name capitalized, or if they're Irish? #pod #pod =cut 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; } #pod =back #pod #pod =head2 Overloaded Operators #pod #pod =over 4 #pod #pod =item stringify #pod #pod print "I have your email address, $address."; #pod #pod Objects stringify to C by default. It's possible that you don't #pod like that idea. Okay, then, you can change it by modifying #pod C<$Email:Address::STRINGIFY>. Please consider modifying this package #pod variable using C. You might step on someone else's toes if you #pod don't. #pod #pod { #pod local $Email::Address::STRINGIFY = 'host'; #pod print "I have your address, $address."; #pod # geeknest.com #pod } #pod print "I have your address, $address."; #pod # "Casey West" #pod #pod Modifying this package variable is now deprecated. Subclassing is now the #pod recommended approach. #pod #pod =cut 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; #pod =pod #pod #pod =back #pod #pod =cut 1; =pod =encoding UTF-8 =head1 NAME Email::Address - RFC 2822 Address Parsing and Creation =head1 VERSION version 1.913 =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. Version 1.909 and earlier of this module had vulnerabilies (L) and (L) which allowed specially constructed email to cause a denial of service. The reported vulnerabilities and some other pathalogical cases (meaning they really shouldn't occur in normal email) have been addressed in version 1.910 and newer. If you're running version 1.909 or older, you should update! Alternatively, you could switch to L|Email::Address::XS> which has a backward compatible API. B =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 one (C<1>) level 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 PERL VERSION This library should run on perls released even a long time ago. It should work on any version of perl released in the last five years. Although it may work on older versions of perl, no guarantee is made that the minimum required version will not be increased. The version may be increased for any reason, and there is no promise that patches will be accepted to lower the minimum required perl. =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 CONTRIBUTORS =for stopwords Alex Vandiver David Golden Steinbrunner Glenn Fowler Jim Brandt Kevin Falcone Pali Ricardo Signes Ruslan Zakirov sunnavy William Yardley =over 4 =item * Alex Vandiver =item * David Golden =item * David Steinbrunner =item * Glenn Fowler =item * Jim Brandt =item * Kevin Falcone =item * Pali =item * Ricardo Signes =item * Ruslan Zakirov =item * sunnavy =item * William Yardley =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 __END__ #pod =head2 Did I Mention Fast? #pod #pod On his 1.8GHz Apple MacBook, rjbs gets these results: #pod #pod $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 5 #pod Rate Mail::Address Email::Address #pod Mail::Address 2.59/s -- -44% #pod Email::Address 4.59/s 77% -- #pod #pod $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 25 #pod Rate Mail::Address Email::Address #pod Mail::Address 2.58/s -- -67% #pod Email::Address 7.84/s 204% -- #pod #pod $ perl -Ilib bench/ea-vs-ma.pl bench/corpus.txt 50 #pod Rate Mail::Address Email::Address #pod Mail::Address 2.57/s -- -70% #pod Email::Address 8.53/s 232% -- #pod #pod ...unfortunately, a known bug causes a loss of speed the string to parse has #pod certain known characteristics, and disabling cache will also degrade #pod performance. #pod #pod =head1 ACKNOWLEDGEMENTS #pod #pod Thanks to Kevin Riggle and Tatsuhiko Miyagawa for tests for annoying #pod phrase-quoting bugs! #pod #pod =cut Email-Address-1.913/xt/author/000755 000765 000024 00000000000 14357132066 016210 5ustar00rjbsstaff000000 000000 Email-Address-1.913/xt/release/000755 000765 000024 00000000000 14357132066 016326 5ustar00rjbsstaff000000 000000 Email-Address-1.913/xt/release/changes_has_content.t000644 000765 000024 00000002101 14357132066 022502 0ustar00rjbsstaff000000 000000 use Test::More tests => 2; note 'Checking Changes'; my $changes_file = 'Changes'; my $newver = '1.913'; my $trial_token = '-TRIAL'; my $encoding = 'UTF-8'; 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; 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>); if ($encoding) { require Encode; $changelog = Encode::decode($encoding, $changelog, Encode::FB_CROAK()); } 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; } Email-Address-1.913/xt/author/pod-syntax.t000644 000765 000024 00000000252 14357132066 020502 0ustar00rjbsstaff000000 000000 #!perl # This file was automatically generated by Dist::Zilla::Plugin::PodSyntaxTests. use strict; use warnings; use Test::More; use Test::Pod 1.41; all_pod_files_ok(); Email-Address-1.913/t/patterns.t000644 000765 000024 00000003654 14357132066 016553 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; =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 ); 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" ); } } done_testing; Email-Address-1.913/t/cache-cow.t000644 000765 000024 00000002276 14357132066 016543 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; my $have_scalar_util = 0; if (eval "use Scalar::Util 1.09 (); 1") { $have_scalar_util = 1; } 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", ); } done_testing; Email-Address-1.913/t/quote-encoded.t000644 000765 000024 00000001110 14357132066 017430 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; # 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 }; 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/^"=\?/; done_testing; Email-Address-1.913/t/tests.t000644 000765 000024 00000107327 14357132066 016057 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; # 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-- 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, ], ], ], [ q{"" }, [ [ '', 'real-- ATAT --actual.mil', undef, ], ], ], ); my $tests = 1; $tests += @list; use_ok 'Email::Address'; for my $i (0 .. $#list) { local $_ = $list[$i]; subtest "test case $i" => sub { $_->[0] =~ s/-- ATAT --/@/g; my @addrs = Email::Address->parse($_->[0]); my $count = @{ $_->[1] }; my @tests = map { Email::Address->new(map { $_ ? do {s/-- ATAT --/@/g; $_} : $_ } @$_) } @{$_->[1]}; unless ( is(@addrs, $count, "got expected result count") ) { diag "addresses actually received:"; diag " - " . $_->format for @addrs; return; } for (0 .. $#addrs) { my $addr = $addrs[$_]; my $spec = $list[$i][1][$_]; my $test = Email::Address->new(@$spec); subtest "parse results" => sub { is($addr->phrase, $spec->[0], "phrase"); }; subtest "round trip comparison" => sub { is($addr->format, $test->format, "format: " . $test->format); is($addr->as_string, $test->format, "format: " . $test->format); is("$addr", $test->format, "stringify: $addr"); is($addr->name, $test->name, "name: " . $test->name); }; } } } done_testing; Email-Address-1.913/t/comma-free.t000644 000765 000024 00000000325 14357132066 016716 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; 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; Email-Address-1.913/t/pathological.t000644 000765 000024 00000001362 14357132066 017353 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; use Email::Address; use Time::HiRes 'time'; my %cases = ( 'CVE-2015-7686' => q{\(¯¯`·.¥«P®ÎÑç€ØfTh€ÐÅ®K»¥.·`¯¯\) , "(> \" \" <) ( ='o'= ) (\")___(\") sWeEtAnGeLtHePrInCeSsOfThEsKy" , "(i)cRiStIaN(i)" , "(S)MaNu_vuOLeAmMazZaReNimOe(*)MiAo(@)" }, 'CVE-2018-12558' => "\f" x 30, ); for my $name ( sort keys %cases ) { my $start = Time::HiRes::time(); Email::Address->parse( $cases{$name} ); my $time = Time::HiRes::time() - $start; ok( $time < 0.5, "Parsing '$name' takes less than 0.5 second($time)" ); } done_testing; Email-Address-1.913/t/ascii.t000644 000765 000024 00000002577 14357132066 016006 0ustar00rjbsstaff000000 000000 use v5.12; 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; Email-Address-1.913/t/order.t000644 000765 000024 00000000562 14357132066 016021 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; use Email::Address; my @emails = ( q{"foo" }, q{bar@example.com}, q{"baz" }, q{baz@example.com} ); my @addr = Email::Address->parse( join ', ', @emails ); is( scalar @addr, scalar @emails, "correct number of emails" ); is_deeply( \@addr, \@emails, 'correct order of emails' ); done_testing; Email-Address-1.913/t/00-report-prereqs.t000644 000765 000024 00000013601 14357132066 020113 0ustar00rjbsstaff000000 000000 #!perl use strict; use warnings; # This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.029 use Test::More tests => 1; use ExtUtils::MakeMaker; use File::Spec; # from $version::LAX my $lax_version_re = qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )? | (?:\.[0-9]+) (?:_[0-9]+)? ) | (?: v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )? | (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)? ) )/x; # hide optional CPAN::Meta modules from prereq scanner # and check if they are available my $cpan_meta = "CPAN::Meta"; my $cpan_meta_pre = "CPAN::Meta::Prereqs"; my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic # Verify requirements? my $DO_VERIFY_PREREQS = 1; sub _max { my $max = shift; $max = ( $_ > $max ) ? $_ : $max for @_; return $max; } sub _merge_prereqs { my ($collector, $prereqs) = @_; # CPAN::Meta::Prereqs object if (ref $collector eq $cpan_meta_pre) { return $collector->with_merged_prereqs( CPAN::Meta::Prereqs->new( $prereqs ) ); } # Raw hashrefs for my $phase ( keys %$prereqs ) { for my $type ( keys %{ $prereqs->{$phase} } ) { for my $module ( keys %{ $prereqs->{$phase}{$type} } ) { $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module}; } } } return $collector; } my @include = qw( ); my @exclude = qw( ); # Add static prereqs to the included modules list my $static_prereqs = do './t/00-report-prereqs.dd'; # Merge all prereqs (either with ::Prereqs or a hashref) my $full_prereqs = _merge_prereqs( ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ), $static_prereqs ); # Add dynamic prereqs to the included modules list (if we can) my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; my $cpan_meta_error; if ( $source && $HAS_CPAN_META && (my $meta = eval { CPAN::Meta->load_file($source) } ) ) { $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs); } else { $cpan_meta_error = $@; # capture error from CPAN::Meta->load_file($source) $source = 'static metadata'; } my @full_reports; my @dep_errors; my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs; # Add static includes into a fake section for my $mod (@include) { $req_hash->{other}{modules}{$mod} = 0; } for my $phase ( qw(configure build test runtime develop other) ) { next unless $req_hash->{$phase}; next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING}); for my $type ( qw(requires recommends suggests conflicts modules) ) { next unless $req_hash->{$phase}{$type}; my $title = ucfirst($phase).' '.ucfirst($type); my @reports = [qw/Module Want Have/]; for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) { next if grep { $_ eq $mod } @exclude; my $want = $req_hash->{$phase}{$type}{$mod}; $want = "undef" unless defined $want; $want = "any" if !$want && $want == 0; if ($mod eq 'perl') { push @reports, ['perl', $want, $]]; next; } my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required"; my $file = $mod; $file =~ s{::}{/}g; $file .= ".pm"; my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC; if ($prefix) { my $have = MM->parse_version( File::Spec->catfile($prefix, $file) ); $have = "undef" unless defined $have; push @reports, [$mod, $want, $have]; if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) { if ( $have !~ /\A$lax_version_re\z/ ) { push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)"; } elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) { push @dep_errors, "$mod version '$have' is not in required range '$want'"; } } } else { push @reports, [$mod, $want, "missing"]; if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) { push @dep_errors, "$mod is not installed ($req_string)"; } } } if ( @reports ) { push @full_reports, "=== $title ===\n\n"; my $ml = _max( map { length $_->[0] } @reports ); my $wl = _max( map { length $_->[1] } @reports ); my $hl = _max( map { length $_->[2] } @reports ); if ($type eq 'modules') { splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; } else { splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; } push @full_reports, "\n"; } } } if ( @full_reports ) { diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports; } if ( $cpan_meta_error || @dep_errors ) { diag "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n"; } if ( $cpan_meta_error ) { my ($orig_source) = grep { -f } 'MYMETA.json', 'MYMETA.yml'; diag "\nCPAN::Meta->load_file('$orig_source') failed with: $cpan_meta_error\n"; } if ( @dep_errors ) { diag join("\n", "\nThe following REQUIRED prerequisites were not satisfied:\n", @dep_errors, "\n" ); } pass('Reported prereqs'); # vim: ts=4 sts=4 sw=4 et: Email-Address-1.913/t/format.t000644 000765 000024 00000001440 14357132066 016172 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Test::More; 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" }, ], [ [ "", undef, undef, ], '', ], ); for (@tests) { my $addr = Email::Address->new( @{ $_->[0] } ); is( $addr->format, $_->[1], "format: $_->[1]" ); } done_testing; Email-Address-1.913/t/00-report-prereqs.dd000644 000765 000024 00000002702 14357132066 020237 0ustar00rjbsstaff000000 000000 do { my $x = { 'configure' => { 'requires' => { 'ExtUtils::MakeMaker' => '6.78' } }, 'develop' => { 'requires' => { 'Encode' => '0', 'Test::More' => '0', 'Test::Pod' => '1.41' } }, 'runtime' => { 'requires' => { 'overload' => '0', 'perl' => '5.012', 'strict' => '0', 'warnings' => '0' } }, 'test' => { 'recommends' => { 'CPAN::Meta' => '2.120900' }, 'requires' => { 'Encode' => '0', 'Encode::MIME::Header' => '0', 'ExtUtils::MakeMaker' => '0', 'File::Spec' => '0', 'Test::More' => '0.96', 'Time::HiRes' => '0' } } }; $x; }Email-Address-1.913/t/quoting.t000644 000765 000024 00000003321 14357132066 016370 0ustar00rjbsstaff000000 000000 use v5.12; use warnings; use Email::Address; use Test::More; 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 $B = chr 0x5C; # \ my $phrase = qq{jack "$B" robinson}; my $ea = Email::Address->new($phrase, 'jack@work.com'); is $ea->phrase, $phrase, "phrase round trips via ->new"; is $ea->format, qq{"jack $B"$B$B$B" robinson" }; my ($addr) = Email::Address->parse( $ea->format ); is($addr->format, $ea->format, "round trip safely"); } is( Email::Address->new('X', 'Y@example.mil', 'Z')->format, q{"X" (Z)}, 'we parenthesize comments', ); is( Email::Address->new('X', 'Y@example.mil', '0')->format, q{"X" (0)}, 'we parenthesize comments', ); is( Email::Address->new(undef, 'Y@example.mil', '0')->format, q{ (0)}, 'we do not provide an empty phrase', ); is( Email::Address->new('', 'Y@example.mil', '0')->format, q{ (0)}, 'we do not provide an empty phrase', ); done_testing; Email-Address-1.913/bench/corpus.txt000644 000765 000024 00000203470 14357132066 017414 0ustar00rjbsstaff000000 000000 "'''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) Email-Address-1.913/bench/ea-vs-ma.pl000644 000765 000024 00000001434 14357132066 017277 0ustar00rjbsstaff000000 000000 #!/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' }, }); Email-Address-1.913/bench/too_long.pl000644 000765 000024 00000000217 14357132066 017507 0ustar00rjbsstaff000000 000000 use Email::Address; $value = q{first@foo.org,} . q{ } x 26 . q{second@foo.org}; use Data::Dumper; print Dumper(Email::Address->parse($value));