From 7d2043f95f42122c2ae3340053f893095efe1550 Mon Sep 17 00:00:00 2001 From: Nick Bebout Date: Thu, 13 Feb 2014 11:34:20 -0600 Subject: [PATCH] 1.584 --- ChangeLog | 28 +- FAQ | 205 ++- Makefile | 10 +- README | 7 +- VERSION | 2 +- VERSION_EXE | 2 +- W/.BUILD_EXE_TIME | 6 + W/Mail-IMAPClient-3.35.tar.gz | Bin 186010 -> 0 bytes W/learn/imap_tcpdump | 3 + W/learn/longline | 10 + W/learn/longline_10000_11000 | 12 + W/paypal_reply/memo | 32 +- W/paypal_reply/paypal_bilan | 102 +- .../{paypal_bilan_1.66 => paypal_bilan_1.70} | 157 ++- W/paypal_reply/paypal_build_invoices | 18 +- examples/imapsync_example.sh | 10 + imapsync | 205 ++- imapsync_by_country.txt | 67 + index.shtml | 138 +- perlcritic_2.out | 1163 ++++++++--------- perlcritic_3.out | 72 +- tests.sh | 108 +- 22 files changed, 1420 insertions(+), 937 deletions(-) delete mode 100644 W/Mail-IMAPClient-3.35.tar.gz create mode 100644 W/learn/imap_tcpdump create mode 100755 W/learn/longline create mode 100755 W/learn/longline_10000_11000 rename W/paypal_reply/{paypal_bilan_1.66 => paypal_bilan_1.70} (91%) create mode 100644 examples/imapsync_example.sh create mode 100644 imapsync_by_country.txt diff --git a/ChangeLog b/ChangeLog index c910d54..0653e12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,37 @@ RCS file: RCS/imapsync,v Working file: imapsync -head: 1.580 +head: 1.584 branch: locks: strict - gilles: 1.580 + gilles: 1.584 access list: symbolic names: keyword substitution: kv -total revisions: 580; selected revisions: 580 +total revisions: 584; selected revisions: 584 description: ---------------------------- -revision 1.580 locked by: gilles; +revision 1.584 locked by: gilles; +date: 2014/02/05 00:40:59; author: gilles; state: Exp; lines: +77 -50 +Debug. Print separator given by NAMESPACE even when --sep1 oe --sep2 is used. +Debug. Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used. +(Preparation for advising not to use --prefix unless suggested) +---------------------------- +revision 1.583 +date: 2014/02/04 03:04:35; author: gilles; state: Exp; lines: +15 -11 +Bug fix. --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER. "Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verificationerror:00000000:lib(0):func(0):reason(0)" +---------------------------- +revision 1.582 +date: 2014/01/24 01:43:19; author: gilles; state: Exp; lines: +20 -12 +Bugfix. Check if going to tls is ok, exit otherwise with explicit error message. +Thanks to Dennis Schridde for reporting this ugly bug. +---------------------------- +revision 1.581 +date: 2014/01/15 02:42:06; author: gilles; state: Exp; lines: +41 -15 +Added --debugmaxlinelength +Added --minmaxlinelength to select messages with long lines only. +---------------------------- +revision 1.580 date: 2013/12/25 02:52:36; author: gilles; state: Exp; lines: +51 -27 Added --skipcrossduplicates to avoid copying messages that are already copied in another folder. Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are). diff --git a/FAQ b/FAQ index 74b5b58..58d2c84 100644 --- a/FAQ +++ b/FAQ @@ -1,5 +1,5 @@ #!/bin/cat -# $Id: FAQ,v 1.161 2013/12/25 03:25:18 gilles Exp gilles $ +# $Id: FAQ,v 1.166 2014/01/27 02:23:30 gilles Exp gilles $ +------------------+ | FAQ for imapsync | @@ -1601,11 +1601,15 @@ R. This error message comes from Exchange IMAP server when it encounters any problem. Most of the time it is one of the following: * Some messages are bigger than the size limit. 10 MB by default - on Exchange. It can be upped by configuration. - Or use option --maxsize 10000000 (for 10 MB, change it if needed) - to tell imapsync to skip those messages. + on Exchange. It can be upped by configuration for Exchange. + If you configure this limit then use option --maxsize 10000000 + for 10 MB, change it if needed) to tell imapsync to skip those messages. + This value is 25 MB for Office365 --maxsize 25000000 - imapsync ... --maxsize 10000000 + imapsync ... --maxsize 10000000 # 10 MB for Exchange + + imapsync ... --maxsize 25000000 # 25 MB for Office365 + * Quota reached. The whole account is full. It can be upped by configuration. @@ -1645,45 +1649,7 @@ Thanks to Dave Murray and Simon Savva for reporting and solving this issue. ======================================================================= -Q. From Zimbra to XXX - -imapsync ... \ - --exclude "Conversation Action Settings" \ - --exclude "Quick Step Settings" \ - --exclude "News Feed" - -======================================================================= -Q. From or to HMailServer version 4.4.1. - -R. You have to add prefix and separator manually because 4.4.1 doesn't -honor the NAMESPACE imap command. - -Example for host1: - -imapsync ... \ - --prefix1 "" --sep1 . - -No specific option for HMailServer 5.3.3 since NAMESPACE is supported. - -Maybe --subscribe_all will help you to see all migrated folders. - - -======================================================================= -Q. Synchronizing from SmarterMail to XXX - -imapsync --host1 imap.d1.org --user1 joe --password1 secret1 --sep1 "/" \ - --host2 imap.d2.org --user2 joe --password2 secret2 \ - --noauthmd5 \ - --prefix1 "" \ - --regextrans2 's#^Inbox$#INBOX#' \ - --regextrans2 's#Sent Items$#Sent#' \ - --dry --justfolders - -Maybe add other --regextrans2 to change folder names and see the result. -When satisfied, run without --dry --justfolders - -======================================================================= -Q. Synchronizing from XXX to Gmail +Q. Synchronizing from XXX to Gmail R. There are some details to get the special [Gmail] sub-folders right. Here's an example of migrating an old "Sent" folder to @@ -1692,37 +1658,36 @@ R. There are some details to get the special [Gmail] sub-folders imapsync --host1 mail.oldhost.com \ --user1 my_email@oldhost.com \ --password1 password \ - --host2 imap.gmail.com --ssl2 \ + --host2 imap.gmail.com \ --user2 my_email@gmail.com \ --password2 password \ + --ssl2 \ --exitwhenover 500000000 \ - --exclude "\[Gmail\]$" \ --addheader \ - --regextrans2 "s,^Sent$,[Gmail]/Sent Mail," \ - --regextrans2 "s/[ ]+/_/g" \ - --regextrans2 "s/[\^]/_/g" \ - --regextrans2 "s/['\"\\\\]/_/g" + --exclude "\[Gmail\]$" \ + --regextrans2 "s/[ ]+/_/g" \ + --regextrans2 "s/[\^]/_/g" \ + --regextrans2 "s/['\"\\\\]/_/g" \ + --regextrans2 "s,^Sent$,[Gmail]/Sent Mail," +Explanations: -If you're using a different language in Gmail you might adapt -this example with the folder name translated, an example in French: +--ssl2 is mandatory since Gmail only supports imap ssl connections. -imapsync ... - --regextrans2 "s,^Messages envoy&AOk-s$,[Gmail]/Messages envoy&AOk-s," \ +--exitwhenover 500000000 option is here to avoid locking when +transfers exceed maximum limit. +See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518 +--exitwhenover is not mandatory in the sense you may be able to +use an upper value than 500 MB without disconnections; I don't +know the hard value, it seems to vary, so just have some tries +and report me what you discover in case you detect something. The --addheader option is there because "Sent" folder messages -sometimes lack the "Message-Id" header needed by imapsync -to identify messages (only when --useuid is not used). -So option --addheader adds a "Message-Id" header. - -You can add --folder "INBOX.Sent" in the example in case -you want to sync only the "Sent" folder. - -The "All Mail" archive pseudo-folder should be updated automaticaly. - ---exitwhenover option is here to avoid locking when transfers -exceed maximum limit. -See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518 +sometimes lack the "Message-Id:" and "Received:" headers needed +by imapsync to identify messages (only when --useuid is not used). +So option --addheader adds a "Message-Id" header consiting fo +the imap UID of the message on the host1 folder, like +"Message-Id: 12345@imapsync". --exclude "\[Gmail\]$" is there to avoid a small examine/select error: "Could not examine: 43 NO [NONEXISTENT] Unknown Mailbox: [Gmail] @@ -1740,9 +1705,25 @@ not accepted by gmail, character ^ to character _ underscore. --regextrans2 "s/['\"\\\\]/_/g" is optional. It converts characters ' or " or \ to character _ underscore. +--regextrans2 "s,^Sent$,[Gmail]/Sent Mail," is to transform the +folder name "Sent" and adapt it to Gmail "Sent Mail" folder. +If you're using a different language in Gmail you might adapt +this example with the folder name translated, an example in French: + +imapsync ... + --regextrans2 "s,^Messages envoy&AOk-s$,[Gmail]/Messages envoy&AOk-s," \ + + +You can add --folder "INBOX.Sent" in the example in case +you want to sync only the "Sent" folder. + You can select folders exported to imap within the gmail preferences, unselect all "System labels" depending on your needs. +The "All Mail" archive pseudo-folder should be updated automaticaly. + + + ======================================================================= Q. Some of the folders are getting created with [IMAP] prefix on Google side. How to stop creating folder with this prefix? @@ -1752,21 +1733,47 @@ R. No switch in imapsync since [IMAP]/ prefix is done by Gmail, it might be configurable with Gmail parameters. ======================================================================= -Q. Synchronizing from Gmail to XXX +Q. Synchronizing from Gmail to XXX R. Gmail needs SSL ./imapsync \ --host1 imap.gmail.com \ - --ssl1 \ --user1 gilles.lamiral@gmail.com \ --password1 gmailsecret \ - --exitwhenover 2500000000 \ --host2 localhost --user2 tata \ --password2 tatasecret \ + --ssl1 \ + --exitwhenover 2500000000 \ --useheader="X-Gmail-Received" \ - --useheader 'Message-Id' + --useheader "Message-Id" \ + --skipcrossduplicates \ + --folderfirst "Work" \ + --folderfirst "Friends" \ + --folderlast "CanWait" \ + --folderlast "[Gmail]/All Mail" + + +Explanations: + +--ssl1 is mandatory since Gmail only supports imap ssl connections. + +--exitwhenover 2500000000 option is here to avoid locking when +transfers exceed maximum limit. +See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518 +--exitwhenover is not mandatory in the sense you may be able to +use an upper value than 2.5 GB without disconnections; I don't +know the hard value, it seems to vary, so just have some tries +and report me what you discover in case you detect something. + +--useheader="X-Gmail-Received" --useheader "Message-Id" are not +mandatory. I use them because I found (several years ago, it may +have changed) that Gmail always adds a different header +"X-Gmail-Received:" to all messages it gets. So the identification +by imapsync can not fall using this header. "Message-Id" is there +for safety about this Gmail rule. + If your destination imap server doesn't like "[Gmail]" name, just add option: @@ -1779,6 +1786,27 @@ unselect all "System labels". exceed maximum limit. See http://support.google.com/a/bin/answer.py?hl=en&answer=1071518 +--skipcrossduplicates is optional but it can save Gigabytes of hard +disk memory. Within imap protocol, Gmail presents Gmail labels as +folders so a message labeled "Work" "ProjectX" "Urgent" ends up +in three different imap folders "Work" "ProjectX" and "Urgent" +after an imap sync. --skipcrossduplicates prevent this behavior. + +An issue with --skipcrossduplicates is that the first label synced +by imapsync goes to its corresponding folder and other labels are +ignored. This way, at least you can choose what labels have the +priority by using the --folderfirst option. For example +--folderfirst "Work" will sync messages labeled "Work" before +messages labeled "CanWait" or "Urgent". By default imapsync +syncs folders (Gmail labels) using the classical alphanumeric order. + +--folderlast "CanWait" will sync only messages that have the +label CanWait and only it. + +--folderlast "[Gmail]/All Mail", in conjonction with option +--skipcrossduplicates, will only put in "[Gmail]/All Mail" +the messages that are not labeled at all. + ======================================================================= Q. How to use XOAUTH to globally authenticate gmail users? @@ -1826,6 +1854,43 @@ http://www.linux-france.org/prj/imapsync_list/msg00639.html http://biasecurities.com/blog/2009/migrate-email-from-gmail-to-google-apps/ http://www.thamtech.com/blog/2008/03/29/gmail-to-google-apps-email-migration/ +======================================================================= +Q. From Zimbra to XXX + +imapsync ... \ + --exclude "Conversation Action Settings" \ + --exclude "Quick Step Settings" \ + --exclude "News Feed" + +======================================================================= +Q. From or to HMailServer version 4.4.1. + +R. You have to add prefix and separator manually because 4.4.1 doesn't +honor the NAMESPACE imap command. + +Example for host1: + +imapsync ... \ + --prefix1 "" --sep1 . + +No specific option for HMailServer 5.3.3 since NAMESPACE is supported. + +Maybe --subscribe_all will help you to see all migrated folders. + + +======================================================================= +Q. Synchronizing from SmarterMail to XXX + +imapsync --host1 imap.d1.org --user1 joe --password1 secret1 --sep1 "/" \ + --host2 imap.d2.org --user2 joe --password2 secret2 \ + --prefix1 "" \ + --regextrans2 "s#Sent Items$#Sent#" \ + --dry --justfolders + +Maybe add other --regextrans2 to change folder names and see the result. +When satisfied, run without --dry --justfolders + + ======================================================================= Q. Synchronizing from Yahoo to XXX diff --git a/Makefile b/Makefile index 2740d1d..b9ce90e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -# $Id: Makefile,v 1.139 2013/12/25 11:36:53 gilles Exp gilles $ +# $Id: Makefile,v 1.141 2014/02/13 03:18:50 gilles Exp gilles $ .PHONY: help usage all @@ -8,6 +8,10 @@ help: usage usage: @echo " imapsync $(VERSION), You can do :" @echo "make install # as root" + @echo "make install_dependencies # it installs needed Perl modules from CPAN" + @echo "" + @echo "All other goals are for the upstream developper" + @echo "make testf # run tests" @echo "make testv # run tests verbosely" @echo "make test_quick # few tests verbosely" @@ -92,6 +96,9 @@ install: testp imapsync.1 install imapsync.1 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1 chmod 644 $(DESTDIR)$(PREFIX)/share/man/man1/imapsync.1 +install_dependencies: + sh examples/install_modules_linux.sh + .PHONY: cidone ci ci: cidone @@ -345,6 +352,7 @@ upload_lfo: .valid.index.shtml: index.shtml + tidy -q index.shtml> /dev/null validate --verbose index.shtml touch .valid.index.shtml diff --git a/README b/README index 60ba875..f0b43c9 100644 --- a/README +++ b/README @@ -4,7 +4,7 @@ NAME More than 52 different IMAP server softwares supported with success, few failures. - $Revision: 1.580 $ + $Revision: 1.584 $ SYNOPSIS To synchronize imap account "foo" on "imap.truc.org" to imap account @@ -383,7 +383,8 @@ IMAP SERVERS - Samsung Contact IMAP server 8.5.0 - Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 - Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1]. - - SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1]. + - SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], + SmarterMail Professional 10.2 [host1], Smarter Mail 11.7 [host1][host2]. - Softalk Workgroup Mail 7.6.4 [host1]. - SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) - Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 @@ -471,5 +472,5 @@ SIMILAR SOFTWARES Feedback (good or bad) will often be welcome. - $Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ + $Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ diff --git a/VERSION b/VERSION index ef68d40..5136b76 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.580 +1.584 diff --git a/VERSION_EXE b/VERSION_EXE index ef68d40..5136b76 100644 --- a/VERSION_EXE +++ b/VERSION_EXE @@ -1 +1 @@ -1.580 +1.584 diff --git a/W/.BUILD_EXE_TIME b/W/.BUILD_EXE_TIME index ec754ed..58622a6 100644 --- a/W/.BUILD_EXE_TIME +++ b/W/.BUILD_EXE_TIME @@ -263,3 +263,9 @@ 1387941690 BEGIN 1.580 : mercredi 25 décembre 2013, 04:21:30 (UTC+0100) 1387967067 BEGIN 1.580 : mercredi 25 décembre 2013, 11:24:28 (UTC+0100) 1387967901 END 1.580 : mercredi 25 décembre 2013, 11:38:21 (UTC+0100) +1390615061 BEGIN 1.582 : samedi 25 janvier 2014, 02:57:41 (UTC+0100) +1390685504 END 1.582 : samedi 25 janvier 2014, 22:31:44 (UTC+0100) +1390874372 BEGIN 1.582 : mardi 28 janvier 2014, 02:59:33 (UTC+0100) +1390875240 END 1.582 : mardi 28 janvier 2014, 03:14:00 (UTC+0100) +1391561330 BEGIN 1.584 : mercredi 5 février 2014, 01:48:50 (UTC+0100) +1391562789 END 1.584 : mercredi 5 février 2014, 02:13:09 (UTC+0100) diff --git a/W/Mail-IMAPClient-3.35.tar.gz b/W/Mail-IMAPClient-3.35.tar.gz deleted file mode 100644 index d38f41eb2ab614df78222392778265c19e229c67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186010 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 z 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 Exoneration EOF } -echo paypal_bilan_bncexport2 + +echo paypal_bilan_tva_taux_20 +paypal_bilan_tva_taux_20() { +# DID output diff between paypal_bilan_1.70 and 1.71 +( +#set -x +perl -c /g/public_html/imapsync/W/paypal_reply/paypal_bilan || return 1 +/g/public_html/imapsync/W/paypal_reply/paypal_bilan_1.70 --bnc --debug --details --debug_invoice --first_in 147 \ + --avoid_numbers '292 293 643 644 731 732 1093 +1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 +2625 2626 2970 2971 2972 3093' \ + /g/paypal/paypal_201[01234]_??_complet.csv \ + > /g/var/paypal_bilan/tests/paypal_invoice.out1 2>&1 + +/g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug --details --debug_invoice --first_in 147 \ + --avoid_numbers '292 293 643 644 731 732 1093 +1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 +2625 2626 2970 2971 2972 3093' \ + /g/paypal/paypal_201[01234]_??_complet.csv \ + > /g/var/paypal_bilan/tests/paypal_invoice.out2 2>&1 + +echo diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2 + diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/tests/paypal_invoice.out2 +) +} + + + +#echo paypal_bilan_bncexport2 paypal_bilan_bncexport2() { # DID output diff between paypal_bilan_1.66 and 1.67 ( @@ -54,7 +82,7 @@ echo diff /g/var/paypal_bilan/tests/paypal_invoice.out1 /g/var/paypal_bilan/test } -echo paypal_bilan_bncexport +#echo paypal_bilan_bncexport paypal_bilan_bncexport() { # DID output diff between paypal_bilan_1.66 and 1.67 ( diff --git a/W/paypal_reply/paypal_bilan b/W/paypal_reply/paypal_bilan index 1187e88..be96933 100755 --- a/W/paypal_reply/paypal_bilan +++ b/W/paypal_reply/paypal_bilan @@ -1,6 +1,6 @@ #!/usr/bin/perl -# $Id: paypal_bilan,v 1.68 2013/06/07 06:59:41 gilles Exp gilles $ +# $Id: paypal_bilan,v 1.72 2014/01/18 01:38:35 gilles Exp gilles $ use strict; use warnings; @@ -13,7 +13,7 @@ use Test::More 'no_plan' ; die unless (utf8_supported_charset('ISO-8859-1')); -my $rcs = '$Id: paypal_bilan,v 1.68 2013/06/07 06:59:41 gilles Exp gilles $ ' ; +my $rcs = '$Id: paypal_bilan,v 1.72 2014/01/18 01:38:35 gilles Exp gilles $ ' ; $rcs =~ m/,v (\d+\.\d+)/ ; my $VERSION = ($1) ? $1: "UNKNOWN" ; @@ -140,7 +140,7 @@ foreach my $invoice ( @invoices_wanted ) { if ( $invoice_sent ) { $invoice_sent{ $invoice }++ ; - #build_invoice( $invoice ) ; + build_invoice( $invoice ) if ( $debug_invoice or $debug_invoice_utf8 ) ; }elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) { $invoice_not_sent{ $invoice }++ ; build_invoice( $invoice ) ; @@ -371,10 +371,11 @@ sub tests_exportbnc { sub tests { tests_next_invoice( ) ; - #tests_half( ) ; tests_cut( ) ; tests_invoice_00000( ) ; - tests_exportbnc( ) ; + #tests_exportbnc( ) ; + tests_tva_rate( ) ; + tests_tva_rate_str( ) ; } sub compute_line { @@ -677,7 +678,7 @@ sub build_invoice { $priceTTCusd, $HTorTTC ) - = tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) ; + = tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) ; my $object_type = object_type( $Titre_de_l_objet ) ; @@ -1058,6 +1059,62 @@ sub date_aaaa_mm_jj { } +sub tva_rate { + my $date_aaaa_mm_jj = shift ; + + if ( '2014_01_01' gt $date_aaaa_mm_jj ) { + #print "tva_rate 0.196\n" ; + #return( 0 ) ; + return( 0.196 ) ; + } + + if ( '2014_01_01' le $date_aaaa_mm_jj ) { + #print "tva_rate 0.2\n" ; + return( 0.2 ) ; + } + #print "tva_rate 0\n" ; + return( 0 ) ; +} + +sub tests_tva_rate { + ok( 0.196 == tva_rate( '2013_01_01' ), 'tva_rate: old 0.196' ) ; + ok( 0.196 == tva_rate( '2013_12_31' ), 'tva_rate: old 0.196' ) ; + ok( 0.2 == tva_rate( '2014_01_01' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2014_12_31' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2050_01_01' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2050_12_31' ), 'tva_rate: new 0.2' ) ; + return( 0 ) ; +} + + +sub tva_rate_str { + my $date_aaaa_mm_jj = shift ; + + if ( '2014_01_01' gt $date_aaaa_mm_jj ) { + #print "tva_rate 0.196\n" ; + return( '19,60\%' ) ; + } + + if ( '2014_01_01' le $date_aaaa_mm_jj ) { + return( '20\%' ) ; + } + #print "tva_rate 0\n" ; + return( '' ) ; +} + +sub tests_tva_rate_str { + ok( '19,60\%' eq tva_rate_str( '2013_01_01' ), 'tva_rate_str: old 0.196' ) ; + ok( '19,60\%' eq tva_rate_str( '2013_12_31' ), 'tva_rate_str: old 0.196' ) ; + ok( '20,00\%' eq tva_rate_str( '2014_01_01' ), 'tva_rate_str: new 0.2' ) ; + ok( '20,00\%' eq tva_rate_str( '2014_12_31' ), 'tva_rate_str: new 0.2' ) ; + ok( '20,00\%' eq tva_rate_str( '2050_01_01' ), 'tva_rate_str: new 0.2' ) ; + ok( '20,00\%' eq tva_rate_str( '2050_12_31' ), 'tva_rate_str: new 0.2' ) ; + return( 0 ) ; +} + + + + sub tva_line { my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ; my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ; @@ -1080,8 +1137,8 @@ sub tva_line { or ( 'France' eq $Pays ) ) { - $montant_HT_EUR_ass = $Montant2 / 1.196 ; - $montant_TVA_EUR = $Montant2 / 1.196 * 0.196 ; + $montant_HT_EUR_ass = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ; + $montant_TVA_EUR = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ; $debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ; }else{ $montant_HT_EUR_exo = $Montant2 ; @@ -1096,8 +1153,8 @@ sub tva_line { or ( '2013_02_19' gt $date_aaaa_mm_jj ) ) { - $montant_HT_EUR_sup = $Montant2 / 1.196 ; - $montant_TVA_EUR_sup = $Montant2 / 1.196 * 0.196 ; + $montant_HT_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ; + $montant_TVA_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ; }else{ $montant_HT_EUR_sup_exo = $Montant2 ; } @@ -1109,10 +1166,12 @@ sub tva_line { sub tva_stuff { - my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) = @_ ; + my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) = @_ ; my $priceTTCusd = '' ; $Hors_taxe =~ s{,}{.} ; + + my $date_aaaa_mm_jj = date_aaaa_mm_jj( $Date ) ; if ( $Devise eq 'USD' ) { $priceTTCusd = "(usd $Hors_taxe)" ; @@ -1134,10 +1193,10 @@ sub tva_stuff { or ( 'France' eq $Pays ) ) { - $priceHT = sprintf('%2.2f', $Hors_taxe/1.196) ; - $tvaFR = '19,60\%'; - $tvaEN = ''; - $priceTVA = sprintf('%2.2f', $Hors_taxe/1.196*0.196) ; + $priceHT = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ) ; + $tvaFR = tva_rate_str( $date_aaaa_mm_jj ) ; + $tvaEN = '' ; + $priceTVA = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ) ; $priceTTC = sprintf('%2.2f', $Hors_taxe) ; $HTorTTC = 'TTC' ; $messageTVAFR = '' ; @@ -1246,19 +1305,6 @@ $addr = " } -sub half { - my $string = shift ; - my $half = int( lenght( $string ) / 2 ) ; - # TO BE DONE - -} - -sub tests_half { - my( $aa, $bb ) = half( 'aa bb' ) ; - ok( 'aa' eq $aa, 'half: aa' ) ; - ok( 'bb' eq $bb, 'half: bb' ) ; -} - sub cut { my $string = shift ; my $offset = shift ; diff --git a/W/paypal_reply/paypal_bilan_1.66 b/W/paypal_reply/paypal_bilan_1.70 similarity index 91% rename from W/paypal_reply/paypal_bilan_1.66 rename to W/paypal_reply/paypal_bilan_1.70 index c9c3d7a..762bb29 100755 --- a/W/paypal_reply/paypal_bilan_1.66 +++ b/W/paypal_reply/paypal_bilan_1.70 @@ -1,6 +1,6 @@ #!/usr/bin/perl -# $Id: paypal_bilan,v 1.66 2013/03/26 19:50:20 gilles Exp gilles $ +# $Id: paypal_bilan,v 1.70 2014/01/17 15:27:11 gilles Exp gilles $ use strict; use warnings; @@ -13,7 +13,7 @@ use Test::More 'no_plan' ; die unless (utf8_supported_charset('ISO-8859-1')); -my $rcs = '$Id: paypal_bilan,v 1.66 2013/03/26 19:50:20 gilles Exp gilles $ ' ; +my $rcs = '$Id: paypal_bilan,v 1.70 2014/01/17 15:27:11 gilles Exp gilles $ ' ; $rcs =~ m/,v (\d+\.\d+)/ ; my $VERSION = ($1) ? $1: "UNKNOWN" ; @@ -87,10 +87,9 @@ if ( $tests ) { my @files = @ARGV ; -my %action_of_invoice ; +my %action_invoice ; my %invoice_paypal ; -#$invoice_paypal{ $first_invoice } = 1 ; my @invoices_wanted = split( /\s+/, $invoices ) if $invoices ; @@ -100,41 +99,24 @@ my %avoid_numbers ; #print "@invoices\n" ; +my @actions ; + foreach my $file ( @files ) { - my @actions = parse_file( $file ) ; - - foreach my $action (@actions) { - my %action = %$action ; - #print $action->{ Nom }, "\n" ; - my( $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat, - $Devise, $Montant, $Numero_davis_de_reception, $Solde, - $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet, $Nom_Option_2, $Option_2_Valeur, - $Impact_sur_le_solde ) - = @action{ ( 'Date', 'Heure', 'Fuseau horaire', 'Nom', 'Type', 'Etat', - 'Devise', 'Montant', "Numéro d'avis de réception", 'Solde', - 'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet", 'Nom Option 2', 'Option 2 Valeur', - 'Impact sur le solde') } ; - #print "[$Option_2_Valeur] [$Impact_sur_le_solde]\n" ; - #next; - ( $Etat ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ; - ( $Hors_taxe ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ; - $Impact_sur_le_solde ||= '' ; - - my $invoice = 'NONE' ; - $Montant = $action->{ 'Net' } if not defined $Montant; - # compute_line() adds $action->{ 'invoice' } if needed - compute_line( $action, $invoice, $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat, - $Devise, $Montant, $Numero_davis_de_reception, $Solde, - $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe, $Titre_de_l_objet, - $Impact_sur_le_solde ) ; - - # index by invoice number - $action_of_invoice{ $action->{ 'invoice' } } = $action ; - } - delete $action_of_invoice{ 'NONE' } ; + my @actions_file = parse_file( $file ) ; + push( @actions, @actions_file ) ; } +foreach my $action (@actions) { + # compute_line() adds $action->{ 'invoice' } if needed + compute_line( $action ) ; + + # index by invoice number + $action_invoice{ $action->{ 'invoice' } } = $action ; +} +delete $action_invoice{ 'NONE' } ; + + my $last_invoice ; my @invoice_paypal = sort { $a <=> $b } keys %invoice_paypal ; $last_invoice = $invoice_paypal[-1] || 0 ; @@ -149,7 +131,7 @@ my %invoice_not_sent ; foreach my $invoice ( @invoices_wanted ) { - my $action = $action_of_invoice{ $invoice } ; + my $action = $action_invoice{ $invoice } ; next if ! $action ; my $email_address = $action->{ "De l'adresse email" } ; @@ -158,7 +140,7 @@ foreach my $invoice ( @invoices_wanted ) { if ( $invoice_sent ) { $invoice_sent{ $invoice }++ ; - #build_invoice( $invoice ) ; + build_invoice( $invoice ) if ( $debug_invoice or $debug_invoice_utf8 ) ; }elsif( not ( $invoice_canceled{ $invoice } or $invoice_refund{ $invoice } ) ) { $invoice_not_sent{ $invoice }++ ; build_invoice( $invoice ) ; @@ -385,18 +367,38 @@ sub tests_exportbnc { } + + sub tests { tests_next_invoice( ) ; - #tests_half( ) ; tests_cut( ) ; tests_invoice_00000( ) ; - tests_exportbnc( ) ; + #tests_exportbnc( ) ; + tests_tva_rate( ) ; } sub compute_line { - my( $action, $invoice, $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat, - $Devise, $Montant, $Numero_davis_de_reception, $Solde, - $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe_paypal, $Titre_de_l_objet, $Impact_sur_le_solde ) = @_ ; + + my $action = shift ; + my %action = %$action ; + + my( $Date, $Heure, $Fuseau_horaire, $Nom, $Type, $Etat, + $Devise, $Montant, $Numero_davis_de_reception, $Solde, + $Pays, $Nom_Option_1, $Valeur_Option_1, $Hors_taxe_paypal, $Titre_de_l_objet, $Nom_Option_2, $Option_2_Valeur, + $Impact_sur_le_solde ) + = @action{ ( 'Date', 'Heure', 'Fuseau horaire', 'Nom', 'Type', 'Etat', + 'Devise', 'Montant', "Numéro d'avis de réception", 'Solde', + 'Pays', 'Nom Option 1', 'Valeur Option 1', 'Hors taxe', "Titre de l'objet", 'Nom Option 2', 'Option 2 Valeur', + 'Impact sur le solde') } ; + #print "[$Option_2_Valeur] [$Impact_sur_le_solde]\n" ; + #next; + ( $Etat ) = @action{ ( 'Etat' ) } || @action{ ( 'État' ) } ; + ( $Hors_taxe_paypal ) = @action{ ( 'Hors taxe' ) } || @action{ ( 'Avant commission' ) } ; + $Impact_sur_le_solde ||= '' ; + + my $invoice = 'NONE' ; + $Montant = $action->{ 'Net' } if not defined $Montant; + $debug and print( "#" x 78, "\n", "[$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] ", @@ -437,7 +439,7 @@ sub compute_line { $total_HT_EUR_exo += $montant_HT_EUR_exo ; $total_HT_EUR_ass += $montant_HT_EUR_ass ; $total_TVA_EUR += $montant_TVA_EUR ; - #$invoice = $first_invoice + $nb_invoice ; + $invoice = next_invoice( ) ; $nb_invoice++ ; $print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ; @@ -465,8 +467,6 @@ sub compute_line { $total_TVA_EUR_sup += $montant_TVA_EUR_sup ; $total_HT_EUR_sup_exo += $montant_HT_EUR_sup_exo ; - - #$invoice = $first_invoice + $nb_invoice ; $invoice = next_invoice( ) ; $nb_invoice++ ; $print_details and print ( "[$invoice] [$Date] [$Heure] [$Fuseau_horaire] [$Nom] [$Type] [$Etat] [$Devise] [$Montant] [$Numero_davis_de_reception] [$Solde] [$Impact_sur_le_solde]\n" ) ; @@ -576,7 +576,7 @@ sub build_invoice { return if ! $invoice ; - my $action = $action_of_invoice{ $invoice } ; + my $action = $action_invoice{ $invoice } ; my $refund = '' ; $refund = 'REFUND ' if $invoice_refund{ $invoice } ; my %action = %$action if $action ; @@ -677,7 +677,7 @@ sub build_invoice { $priceTTCusd, $HTorTTC ) - = tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) ; + = tva_stuff( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) ; my $object_type = object_type( $Titre_de_l_objet ) ; @@ -813,6 +813,9 @@ Hello $name, First of all, I'm sorry for the delay in getting back to you. +Last imapsync release is available from the page +http://imapsync.lamiral.info/paypal_return.shtml + You'll find in the attachment the invoice of imapsync software you bought and paid (dd/mm/yyyy $date). The invoice file is named facture_imapsync-${invoice}.pdf @@ -851,6 +854,9 @@ Hello $name, First of all, I'm sorry for the delay in getting back to you. +Last imapsync release is available from the page +http://imapsync.lamiral.info/paypal_return.shtml + You'll find in the attachment the invoice of imapsync support you bought and paid (dd/mm/yyyy $date). The invoice file is named facture_imapsync-${invoice}.pdf @@ -1052,6 +1058,34 @@ sub date_aaaa_mm_jj { } +sub tva_rate { + my $date_aaaa_mm_jj = shift ; + + if ( '2014_01_01' gt $date_aaaa_mm_jj ) { + #print "tva_rate 0.196\n" ; + #return( 0 ) ; + return( 0.196 ) ; + } + + if ( '2014_01_01' le $date_aaaa_mm_jj ) { + #print "tva_rate 0.2\n" ; + return( 0.2 ) ; + } + #print "tva_rate 0\n" ; + return( 0 ) ; +} + +sub tests_tva_rate { + ok( 0.196 == tva_rate( '2013_01_01' ), 'tva_rate: old 0.196' ) ; + ok( 0.196 == tva_rate( '2013_12_31' ), 'tva_rate: old 0.196' ) ; + ok( 0.2 == tva_rate( '2014_01_01' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2014_12_31' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2050_01_01' ), 'tva_rate: new 0.2' ) ; + ok( 0.2 == tva_rate( '2050_12_31' ), 'tva_rate: new 0.2' ) ; + return( 0 ) ; +} + + sub tva_line { my( $Devise, $Montant2, $Pays, $Nom_Option_1, $Valeur_Option_1, $Titre_de_l_objet, $Date ) = @_ ; my( $montant_HT_EUR_exo, $montant_HT_EUR_ass, $montant_TVA_EUR ) = ( 0, 0, 0 ) ; @@ -1074,8 +1108,8 @@ sub tva_line { or ( 'France' eq $Pays ) ) { - $montant_HT_EUR_ass = $Montant2 / 1.196 ; - $montant_TVA_EUR = $Montant2 / 1.196 * 0.196 ; + $montant_HT_EUR_ass = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ; + $montant_TVA_EUR = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ; $debug_dev and print "$Montant2 $Pays $Valeur_Option_1\n" ; }else{ $montant_HT_EUR_exo = $Montant2 ; @@ -1090,8 +1124,8 @@ sub tva_line { or ( '2013_02_19' gt $date_aaaa_mm_jj ) ) { - $montant_HT_EUR_sup = $Montant2 / 1.196 ; - $montant_TVA_EUR_sup = $Montant2 / 1.196 * 0.196 ; + $montant_HT_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ; + $montant_TVA_EUR_sup = $Montant2 / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ; }else{ $montant_HT_EUR_sup_exo = $Montant2 ; } @@ -1103,10 +1137,12 @@ sub tva_line { sub tva_stuff { - my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet ) = @_ ; + my( $clientTypeEN, $Pays, $Hors_taxe, $Devise, $Titre_de_l_objet, $Date ) = @_ ; my $priceTTCusd = '' ; $Hors_taxe =~ s{,}{.} ; + + my $date_aaaa_mm_jj = date_aaaa_mm_jj( $Date ) ; if ( $Devise eq 'USD' ) { $priceTTCusd = "(usd $Hors_taxe)" ; @@ -1128,10 +1164,10 @@ sub tva_stuff { or ( 'France' eq $Pays ) ) { - $priceHT = sprintf('%2.2f', $Hors_taxe/1.196) ; + $priceHT = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) ) ; $tvaFR = '19,60\%'; $tvaEN = ''; - $priceTVA = sprintf('%2.2f', $Hors_taxe/1.196*0.196) ; + $priceTVA = sprintf('%2.2f', $Hors_taxe / ( 1 + tva_rate( $date_aaaa_mm_jj ) ) * tva_rate( $date_aaaa_mm_jj ) ) ; $priceTTC = sprintf('%2.2f', $Hors_taxe) ; $HTorTTC = 'TTC' ; $messageTVAFR = '' ; @@ -1240,19 +1276,6 @@ $addr = " } -sub half { - my $string = shift ; - my $half = int( lenght( $string ) / 2 ) ; - # TO BE DONE - -} - -sub tests_half { - my( $aa, $bb ) = half( 'aa bb' ) ; - ok( 'aa' eq $aa, 'half: aa' ) ; - ok( 'bb' eq $bb, 'half: bb' ) ; -} - sub cut { my $string = shift ; my $offset = shift ; diff --git a/W/paypal_reply/paypal_build_invoices b/W/paypal_reply/paypal_build_invoices index 09a4a8e..2815765 100755 --- a/W/paypal_reply/paypal_build_invoices +++ b/W/paypal_reply/paypal_build_invoices @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: paypal_build_invoices,v 1.60 2013/12/14 17:30:04 gilles Exp gilles $ +# $Id: paypal_build_invoices,v 1.63 2014/01/18 01:26:53 gilles Exp gilles $ # usage: sh paypal_build_invoices /g/var/paypal_invoices/???? @@ -44,7 +44,9 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2820 /g/paypal/paypal_2013_09_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2891 /g/paypal/paypal_2013_10_complet.csv #/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 2973 /g/paypal/paypal_2013_11_complet.csv -/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3040 /g/paypal/paypal_2013_12_complet.csv +#/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3040 /g/paypal/paypal_2013_12_complet.csv + +/g/public_html/imapsync/W/paypal_reply/paypal_bilan --write_invoices --first_in 3094 /g/paypal/paypal_2014_01_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 147 /g/paypal/paypal_2010_11_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 214 /g/paypal/paypal_2010_12_complet.csv @@ -82,22 +84,26 @@ cp /home/gilles/public_html/AGIL/factures/000/facture_imapsync-000.tex /g/var/pa : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2741 /g/paypal/paypal_2013_08_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2820 /g/paypal/paypal_2013_09_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2891 /g/paypal/paypal_2013_10_complet.csv - -set -x : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 2973 /g/paypal/paypal_2013_11_complet.csv : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3040 /g/paypal/paypal_2013_12_complet.csv +set -x +: /g/public_html/imapsync/W/paypal_reply/paypal_bilan --first_in 3094 /g/paypal/paypal_2014_01_complet.csv set +x # La totale : /g/public_html/imapsync/W/paypal_reply/paypal_bilan --bnc --debug \ - --first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 2625 2626 2970 2971 2972' \ + --first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 +1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 +2625 2626 2970 2971 2972 3093' \ /g/paypal/paypal_201?_??_complet.csv set -v : /g/public_html/imapsync/W/paypal_reply/paypal_bilan \ - --first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 2625 2626 2970 2971 2972' \ + --first_in 147 --avoid_numbers '292 293 643 644 731 732 1093 +1330 1331 1332 1333 1334 1652 1653 2131 2132 2295 2296 2297 2298 +2625 2626 2970 2971 2972 3093' \ /g/paypal/paypal_201?_??_complet.csv set +v diff --git a/examples/imapsync_example.sh b/examples/imapsync_example.sh new file mode 100644 index 0000000..ada9cc3 --- /dev/null +++ b/examples/imapsync_example.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +# imapsync example shell for Unix users +# lines beginning with # are just comments + +# Replace imap.foo.org toto secretoto 192.168.42.4 titi secretiti with your own values + +./imapsync --host1 imap.foo.org --user1 toto --password1 "secretoto" \ + --host2 192.168.42.4 --user2 titi --password2 "secretiti" + diff --git a/imapsync b/imapsync index 23e17ac..e4eb922 100755 --- a/imapsync +++ b/imapsync @@ -22,7 +22,7 @@ Synchronises mailboxes between two imap servers. Good at IMAP migration. More than 52 different IMAP server softwares supported with success, few failures. -$Revision: 1.580 $ +$Revision: 1.584 $ =head1 SYNOPSIS @@ -433,7 +433,8 @@ Success stories reported with the following 57 imap servers - Samsung Contact IMAP server 8.5.0 - Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 - Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1]. - - SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1]. + - SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], + SmarterMail Professional 10.2 [host1], Smarter Mail 11.7 [host1][host2]. - Softalk Workgroup Mail 7.6.4 [host1]. - SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) - Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 @@ -541,7 +542,7 @@ Entries for imapsync: Feedback (good or bad) will often be welcome. -$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ +$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ =cut @@ -581,7 +582,7 @@ use IPC::Open3 'open3' ; my( $rcs, $pidfile, $pidfilelocking, $debug, $debugimap, $debugimap1, $debugimap2, $debugcontent, $debugflags, - $debugLIST, $debugsleep, $debugdev, $debugmemory, + $debugLIST, $debugsleep, $debugdev, $debugmemory, $debugmaxlinelength, $nb_errors, $host1, $host2, $port1, $port2, $user1, $user2, $domain1, $domain2, @@ -664,6 +665,7 @@ my( $messageidnodomain, $fixInboxINBOX, $maxlinelength, + $minmaxlinelength, $uidnext_default, $fixcolonbug, $create_folder_old, @@ -676,7 +678,7 @@ my( # global variables initialisation -$rcs = '$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ '; +$rcs = '$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ '; $total_bytes_transferred = 0; $total_bytes_skipped = 0; @@ -1029,8 +1031,11 @@ print "Host1 capability: ", join(" ", @{ $imap1->capability_update() || [] }), " print "Host2 capability: ", join(" ", @{ $imap2->capability_update() || [] }), "\n"; -exit_clean(0) if ($justlogin); - +if ( $justlogin ) { + $imap1->logout( ) ; + $imap2->logout( ) ; + exit_clean( 0 ) ; +} # # Folder stuff # @@ -1130,17 +1135,17 @@ $checkselectable and do { my($h1_sep,$h2_sep); # what are the private folders separators for each server ? -$debug and print "Getting separators\n"; -$h1_sep = get_separator($imap1, $sep1, "--sep1"); -$h2_sep = get_separator($imap2, $sep2, "--sep2"); +$debug and print "Getting separators\n" ; +$h1_sep = get_separator( $imap1, $sep1, "--sep1", "Host1" ) ; +$h2_sep = get_separator( $imap2, $sep2, "--sep2", "Host2" ) ; -my($h1_prefix,$h2_prefix); -$h1_prefix = get_prefix($imap1, $prefix1, "--prefix1"); -$h2_prefix = get_prefix($imap2, $prefix2, "--prefix2"); +my( $h1_prefix, $h2_prefix ) ; +$h1_prefix = get_prefix( $imap1, $prefix1, "--prefix1", "Host1" ) ; +$h2_prefix = get_prefix( $imap2, $prefix2, "--prefix2", "Host2" ) ; -print "Host1 separator and prefix: [$h1_sep][$h1_prefix]\n"; -print "Host2 separator and prefix: [$h2_sep][$h2_prefix]\n"; +print "Host1 separator and prefix: [$h1_sep][$h1_prefix]\n" ; +print "Host2 separator and prefix: [$h2_sep][$h2_prefix]\n" ; #my $h1_xlist_folders = $imap1->xlist_folders( ) ; #my $h2_xlist_folders = $imap2->xlist_folders( ) ; @@ -1991,11 +1996,14 @@ sub connect_imap { $imap->Debug($mydebugimap); $imap->connect() or die_clean("Can not open imap connection on [$host]: $@\n"); - #myconnect($imap) - # or die_clean("Can not open imap connection on [$host]: $@\n"); + my $banner = $imap->Results()->[0] ; $imap->Banner( $banner ) ; - $imap->starttls( ) if ( $imap->Tls( ) ) ; + + if ( $imap->Tls( ) ) { + $imap->starttls( ) + or die_clean("Can not go to tls encryption on [$host]:", $imap->LastError, "\n" ) ; + } return( $imap ) ; } @@ -2083,7 +2091,10 @@ sub login_imap { } } - $imap->starttls( ) if ( $imap->Tls( ) ) ; + if ( $imap->Tls( ) ) { + $imap->starttls( ) + or die_clean("Can not go to tls encryption on [$host]:", $imap->LastError, "\n" ) ; + } authenticate_imap( $imap, @allargs ) ; @@ -2173,12 +2184,13 @@ sub set_ssl { # $SSL_version = $SSL_version || '' ; #print "[$SSL_version]\n" ; - IO::Socket::SSL::set_ctx_defaults( + + my $sslargs = [ SSL_verify_mode => 'SSL_VERIFY_PEER', SSL_verifycn_scheme => 'imap', SSL_version => $SSL_version, - ) ; - $imap->Ssl( $ssl ) ; + ] ; + $imap->Ssl( $sslargs ) ; return( ) ; } @@ -2307,8 +2319,8 @@ sub banner_imapsync { my @argv = @_ ; my $banner_imapsync = join("", '$RCSfile: imapsync,v $ ', - '$Revision: 1.580 $ ', - '$Date: 2013/12/25 02:52:36 $ ', + '$Revision: 1.584 $ ', + '$Date: 2014/02/05 00:40:59 $ ', "\n",localhost_info(), "\n", "Command line used:\n", "$0 ", command_line_nopassword( @argv ), "\n", @@ -2680,59 +2692,86 @@ sub tests_compare_lists { -sub get_prefix { - my( $imap, $prefix_in, $prefix_opt ) = @_ ; +sub get_prefix { + my( $imap, $prefix_in, $prefix_opt, $Side ) = @_ ; my( $prefix_out ) ; - $debug and print "Getting prefix namespace\n" ; - if ( defined( $prefix_in ) ) { - print "Using [$prefix_in] given by $prefix_opt\n" ; - $prefix_out = $prefix_in ; - return( $prefix_out ) ; - } - $debug and print "Calling namespace capability\n" ; + $debug and print "$Side: Getting prefix\n" ; + + $debug and print "$Side: Calling namespace capability\n" ; if ( $imap->has_capability( "namespace" ) ) { my $r_namespace = $imap->namespace( ) ; $prefix_out = $r_namespace->[0][0][0] ; - return($prefix_out) ; + print "$Side: prefix given by NAMESPACE: [$prefix_out]\n" ; + if ( defined( $prefix_in ) ) { + print "$Side: but using [$prefix_in] given by $prefix_opt\n" ; + $prefix_out = $prefix_in ; + return( $prefix_out ) ; + }else{ + # all good + return( $prefix_out ) ; + } } else{ - print - "No NAMESPACE capability in imap server ", - $imap->Server( ),"\n", - help_to_guess_prefix( $imap, $prefix_opt ) ; - exit_clean( 1 ) ; + if ( defined( $prefix_in ) ) { + print "$Side: using [$prefix_in] given by $prefix_opt\n" ; + $prefix_out = $prefix_in ; + return( $prefix_out ) ; + }else{ + print + "$Side: No NAMESPACE capability in imap server ", + $imap->Server( ),"\n", + help_to_guess_prefix( $imap, $prefix_opt ) ; + exit_clean( 1 ) ; + } } return( ) ; } -sub get_separator { - my($imap, $sep_in, $sep_opt) = @_; - my($sep_out); +sub get_separator { + my( $imap, $sep_in, $sep_opt, $Side ) = @_ ; + my( $sep_out ) ; - if ( defined( $sep_in ) ) { - print "Using [$sep_in] given by $sep_opt\n" ; - $sep_out = $sep_in ; - return( $sep_out ) ; - } - $debug and print "Calling namespace capability\n" ; - if ($imap->has_capability( "namespace" ) ) { + $debug and print "$Side: calling namespace capability\n" ; + if ( $imap->has_capability( "namespace" ) ) { $sep_out = $imap->separator( ) ; - return($sep_out) if defined $sep_out ; - print - "NAMESPACE request failed for ", - $imap->Server(), ": ", $imap->LastError, "\n", - help_to_guess_sep( $imap, $sep_opt ) ; - exit_clean( 1 ) ; + if ( defined( $sep_out ) ) { + print "$Side: separator given by NAMESPACE: [$sep_out]\n" ; + if ( defined( $sep_in ) ) { + print "$Side: but using [$sep_in] given by $sep_opt\n" ; + $sep_out = $sep_in ; + return( $sep_out ) ; + }else{ + return( $sep_out ) ; + } + }else{ + if ( defined( $sep_in ) ) { + print "$Side: NAMESPACE request failed but using [$sep_in] given by $sep_opt\n" ; + $sep_out = $sep_in ; + return( $sep_out ) ; + }else{ + print + "$Side: NAMESPACE request failed for ", + $imap->Server(), ": ", $imap->LastError, "\n", + help_to_guess_sep( $imap, $sep_opt ) ; + exit_clean( 1 ) ; + } + } } else{ - print - "No NAMESPACE capability in imap server ", - $imap->Server(),"\n", - help_to_guess_sep( $imap, $sep_opt ) ; - exit_clean( 1 ) ; + if ( defined( $sep_in ) ) { + print "$Side: No NAMESPACE capability but using [$sep_in] given by $sep_opt\n" ; + $sep_out = $sep_in ; + return( $sep_out ) ; + }else{ + print + "$Side: No NAMESPACE capability in imap server ", + $imap->Server(),"\n", + help_to_guess_sep( $imap, $sep_opt ) ; + exit_clean( 1 ) ; + } } return( ) ; } @@ -2941,7 +2980,8 @@ sub foldersizes { $nb_errors++ ; next ; } - + last if $imap->IsUnconnected() ; + my $hash_ref = { } ; my @msgs = select_msgs( $imap, undef, $search_cmd, $folder ) ; $nb_msgs = scalar( @msgs ) ; @@ -3474,6 +3514,8 @@ sub copy_message { if ( size_filtered( $h1_size, $h1_msg, $h1_fold, $h2_fold ) ) { + $total_bytes_skipped += $h1_size; + $nb_msg_skipped += 1; $h1_nb_msg_processed +=1 ; return( ) ; } @@ -3483,6 +3525,8 @@ sub copy_message { if ( $checkmessageexists and not message_exists( $imap1, $h1_msg ) ) { + $total_bytes_skipped += $h1_size; + $nb_msg_skipped += 1; $h1_nb_msg_processed +=1 ; return( ) ; } @@ -3492,17 +3536,34 @@ sub copy_message { if ( not defined( $string ) and not defined( $string_len ) ) { print "- msg $h1_fold/$h1_msg skipped. Could not be fetched\n" ; + $total_bytes_skipped += $h1_size; + $nb_msg_skipped += 1; + $h1_nb_msg_processed +=1 ; return( ) ; } # Lines two long => do no copy - if ( ( defined ( $maxlinelength ) ) - and ( max_line_length( $string ) > $maxlinelength ) ) { - my $subject = subject( $string ) ; - #print "[$subject]\n" ; - print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] " - . "(Subject:[$subject]) (line length exceeds maxlinelength $maxlinelength bytes)\n" ; - return( ) ; + if ( defined ( $maxlinelength ) or defined ( $minmaxlinelength ) ) { + my $maxlinelength_string = max_line_length( $string ) ; + $debugmaxlinelength and print "msg $h1_fold/$h1_msg maxlinelength: $maxlinelength_string\n" ; + if ( defined ( $maxlinelength ) and ( $maxlinelength_string > $maxlinelength ) ) { + my $subject = subject( $string ) ; + print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] " + . "(Subject:[$subject]) (line length exceeds maxlinelength $maxlinelength bytes)\n" ; + $h1_nb_msg_processed +=1 ; + $total_bytes_skipped += $h1_size; + $nb_msg_skipped += 1; + return( ) ; + } + if ( defined ( $minmaxlinelength ) and ( $maxlinelength_string <= $minmaxlinelength ) ) { + my $subject = subject( $string ) ; + $debugdev and print "- msg $h1_fold/$h1_msg skipped S[$h1_size] F[$h1_flags] I[$h1_idate] " + . "(Subject:[$subject]) (max line length under minmaxlinelength $minmaxlinelength bytes)\n" ; + $h1_nb_msg_processed +=1 ; + $total_bytes_skipped += $h1_size; + $nb_msg_skipped += 1; + return( ) ; + } } my $h1_date = date_for_host2( $h1_msg, $h1_idate ) ; @@ -3530,6 +3591,8 @@ sub copy_message { return( $new_id ) ; } + + sub message_for_host2 { my ( $h1_msg, $h1_fold, $h1_size, $h1_flags, $h1_idate, $h1_fir_ref ) = @_ ; @@ -4945,7 +5008,7 @@ sub check_last_release { } sub imapsync_version { - my $rcs_imapsync = '$Id: imapsync,v 1.580 2013/12/25 02:52:36 gilles Exp gilles $ ' ; + my $rcs_imapsync = '$Id: imapsync,v 1.584 2014/02/05 00:40:59 gilles Exp gilles $ ' ; my $imapsync_version ; if ( $rcs_imapsync =~ m{,v\s+(\d+\.\d+)}xo ) { @@ -5846,7 +5909,7 @@ Several options are mandatory. --exitwhenover : Stop syncing when total bytes transferred reached. Gmail per day allows 2500000000 down 500000000 upload. ---maxlinelength : skip messages with line length longer than bytes. +--maxlinelength : skip messages with a line length longer than bytes. RFC 2822 says it must be no more than 1000 bytes. --useheader : Use this header to compare messages on both sides. @@ -5958,6 +6021,7 @@ sub get_options { "debugimap2!" => \$debugimap2, "debugdev!" => \$debugdev, "debugmemory!" => \$debugmemory, + "debugmaxlinelength!" => \$debugmaxlinelength, "host1=s" => \$host1, "host2=s" => \$host2, "port1=i" => \$port1, @@ -6075,6 +6139,7 @@ sub get_options { "abletosearch!" => \$abletosearch, "showpasswords!" => \$showpasswords, "maxlinelength=i" => \$maxlinelength, + "minmaxlinelength=i" => \$minmaxlinelength, "fixcolonbug!" => \$fixcolonbug, "create_folder_old!" => \$create_folder_old, "maxmessagespersecond=f" => \$maxmessagespersecond, diff --git a/imapsync_by_country.txt b/imapsync_by_country.txt new file mode 100644 index 0000000..0847009 --- /dev/null +++ b/imapsync_by_country.txt @@ -0,0 +1,67 @@ + 832 Etats-Unis d'Amérique + 527 Allemagne + 263 Royaume-Uni + 145 Canada + 143 France + 137 Italie + 118 Suisse + 101 Australie + 83 Pays-Bas + 57 Autriche + 53 Belgique + 48 Suède + 48 Espagne + 36 Danemark + 28 Brésil + 27 Norvège + 27 Finlande + 22 Japon + 15 République tchèque + 14 Russie + 14 Nouvelle-Zélande + 14 Irlande + 14 + 12 Portugal + 12 Pologne + 12 Hong-Kong + 10 Inde + 10 Hongrie + 10 Argentine + 9 Singapour + 9 Luxembourg + 9 Chine + 9 Afrique du Sud + 8 Grèce + 7 Slovaquie + 7 Mexique + 7 Malaisie + 7 Israel + 6 Slovénie + 6 Chili + 5 Lettonie + 4 Islande + 4 Indonésie + 4 Emirats Arabes Unis + 3 Venezuela + 3 Turquie + 3 Thaïlande + 3 Roumanie + 3 Philippines + 3 Malte + 3 Croatie + 2 Uruguay + 2 Estonie + 2 Egypte + 2 Costa Rica + 2 Chypre + 1 Vietnam + 1 Ukraine + 1 Taiwan + 1 Qatar + 1 Panama + 1 Namibie + 1 Maldives + 1 Lituanie + 1 Koweït + 1 Colombie + 1 Bahreïn diff --git a/index.shtml b/index.shtml index 5f64f6e..ef70255 100644 --- a/index.shtml +++ b/index.shtml @@ -5,7 +5,7 @@ Official imapsync migration tool ( release <!--#exec cmd="cat ./VERSION"--> ) - + @@ -81,33 +81,36 @@ for bidirectionnal (2 ways) synchronizations. -

Imapsync used to be free, open and gratis, before november 2010. +

Imapsync used to be free, open and gratis, that was before november 2010. Now imapsync is free, open and not gratis from the homepage. -It is the best decision I've done about imapsync to continue to maintain it. +Imapsync is still under the NOLIMIT license, +claiming no limit to do anything with this work and this license, +so one of the most open license of the universe. + +It is the best decisions I've made about imapsync to continue to maintain it. See detailed explanation and motivation here when I looked for a business model. "Download and donate if happy" doesn't work well. -"Pay for download and I pay back if unhappy" works well. +"Pay for download and I pay back if unhappy" works well, a 100 times better.

-

Facts and figures for 2011-2013

+

Facts and figures for 2011-2014

    -
  • 4000 to 5000 users per month (45000 users a year)
  • +
  • 4000 to 5000 users per month (48000 users a year).
  • +
  • 6 to 25 millions mailboxes transfers per month.
  • +
  • 158 millions transfers for 2013, that is five whole mailboxes synced per second.
  • -
  • 6 to 25 millions mailboxes transfers per month, -total is 93 millions for 2011, 91 millions for 2012, should be 140 millions for end 2013
  • - -
  • Operating systems run by imapsync users: +
  • Operating systems run by imapsync users (in 2013):
      -
    • Linux: 72%
    • -
    • Win32: 13%
    • +
    • Linux: 70%
    • +
    • Win32: 14%
    • Darwin: 6%
    • -
    • FreeBSD: 8%
    • -
    • Solaris: 0.2%
    • +
    • FreeBSD: 10%
    • +
    • Solaris: 0.15%
    • OpenBSD: 0.02%
    • -
    • Other: 0.6%
    • +
    • Other: 0.46%
  • Highest use rate: about 21 millions of IMAP mailbox transfers (in a single month)
  • @@ -115,8 +118,8 @@ total is 93 millions for 2011, 91 millions for 2012, should be 140 millions f

    Where all those numbers come from? -To know wether a newer imapsync exists or not imapsync does a http GET to VERSION. -Via the User-agent parameter it also send:

    +To know wether a newer imapsync exists or not imapsync does a http GET to the file VERSION. +Via the User-agent parameter it also sends:

    • imapsync release
    • @@ -145,7 +148,7 @@ Via the User-agent parameter it also send:

        -
      • 1.580
      • -
      • Enhancement: Added --maxmessagespersecond to limit messages tranfer rate and fix office365 throttle limitation (use --maxmessagespersecond 4).
      • -
      • Enhancement: Added --maxbytespersecond to limit byte transfer rate.
      • -
      • Enhancement: Added --folderfirst string: Sync this folder first. --folderfirst "Work" --folderfirst "Friends"
      • -
      • Enhancement: Added --folderlast string: Sync this folder last. --folderlast "[Gmail]/All Mail" etc.
      • -
      • Enhancement: Added --skipcrossduplicates to avoid copying messages that are already copied in another folder, good from Gmail to X.
      • -
      • Enhancement: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).
      • -
      • Enhancement: Added --debugmemory option that prints memory consumption after each message is copied.
      • -
      • Bug fix: Create nested folders in the sense of their path, parent first. Thanks to Erik Torsner.
      • -
      • Bug fix: Final statistics were avoided for newly created folders.
      • -
      • Bug fix: Do not try to append message if the fetch failed.
      • -
      - -
        -
      • 1.569 Win32 --tmpdir "C:" bugfix
      • -
      • Bug fix: On Win32 trailing blanc in cache dir name raized an error. Blanc is now moved to underscore _
      • -
      • Bug fix: Fixed bug on Windows with for example --tmpdir "E:\TEMP". The colon was badly converted to _, ending with --tmpdir "E_\TEMP". -This fix also automatically moves the old cache to the new one if the new does not exist yet.
      • -
      - -
        -
      • 1.567 imapsync.exe crash fix
      • -
      • Enhancement: Added --authmech EXTERNAL.
      • -
      • Bug fix: Fixed a warning when RFC822.SIZE is null or undef.
      • -
      • Bug fix: Fixed imapsync.exe crash with no error message when it exits on a error. Back to Perl 5.16
      • +
      • 1.584
      • +
      • Enhancement: Added --minmaxlinelength to select messages with long lines only. + It helps to diagnostic Echange error on messages with lines longer than 9000 characters
      • +
      • Enhancement: Added --debugmaxlinelength
      • +
      • Bug fix: --ssl1 --tls2 was buggy because of default SSL_VERIFY_PEER. + "Can not go to tls encryption on [localhost]:Unable to start TLS: Cannot determine peer hostname for verification..."
      • +
      • Bug fix: Check if going to tls is ok, exit otherwise with explicit error message. +Thanks to Dennis Schridde for reporting this ugly bug that deserves a CVE.
      • +
      • Debug: Print separator given by NAMESPACE even when --sep1 oe --sep2 is used.
      • +
      • Debug: Prints prefix given by NAMESPACE even when --prefix1 or --prefix2 is used. +It is a preparation for advising not to use --prefix unless suggested.
      -

      Good changed made before, listed because they can help: +

      Good changes made before, listed because they can help:

        +
      • Enhancement: Added --skipcrossduplicates to avoid copying messages that are already copied in another folder, good from Gmail to X.
      • +
      • Enhancement: Added --debugcrossduplicates to print which messages (UIDs) are skipped with --skipcrossduplicates (and in what other folders they are).
      • +
      • Enhancement: Added --folderfirst string: sync this folder first. --folderfirst "Work" --folderfirst "Friends"
      • +
      • Enhancement: Added --folderlast string: sync this folder last. --folderlast "[Gmail]/All Mail" etc.
      • +
      • Enhancement: Added --maxmessagespersecond to limit messages tranfer rate and fix Office365 throttle limitation (use --maxmessagespersecond 4).
      • +
      • Enhancement: Added --maxbytespersecond to limit byte transfer rate.
      • +
      • Enhancement: Added --debugmemory option that prints memory consumption after each message is copied.
      • + +
      • Enhancement: Added --authmech EXTERNAL.
      • Enhancement: Adapted behavior for allowing --maxdate --mindate with --noabletosearch. Use internat date instead of Date: header.
      • @@ -299,13 +297,6 @@ by ignoring PERMANENTFLAGS (Exchange tests)
      - -

      Simple transfer on Windows

      @@ -346,6 +337,31 @@ example. + + +

      Buy imapsync source code

      Buy latest imapsync Perl source code for 50 EUR @@ -391,7 +407,7 @@ name="submit" alt="PayPal - The safer, easier way to pay online!"/>

      -

      You will receive a download link just after the payment from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      +

      You will receive a download link just after the payment from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      You will also receive a gpg signed invoice within a few days by email.
      Please give a delivery postal address where the invoice will be needed (your company for example), since reedit is not easy (and forbidden by law). @@ -440,7 +456,7 @@ name="submit" alt="PayPal - The safer, easier way to pay online!"/>

      -

      You will receive a download link just after the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      +

      You will receive a download link just after the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      You will also receive a gpg signed invoice within a few days by email.
      Please give a delivery postal address where the invoice will be needed (your company for example), since reedit is not easy (and forbidden by law). @@ -449,7 +465,7 @@ Please give a delivery postal address where the invoice will be needed @@ -496,7 +512,7 @@ It's 2 letters followed by 11 digits, for example mine is FR74429303332.

      -

      You will receive instructions to contact me just after the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      +

      You will receive instructions to contact me just after the payment, from gilles.lamiral@laposte.net (can fall in Spam folder sometimes).
      You will also receive a gpg signed invoice within a few days by email.
      Please give a delivery postal address where the invoice will be needed (your company for example), since reedit is not easy (and forbidden by law). @@ -622,7 +638,7 @@ I like it. (http://www.communigate.com/)

    • Courier IMAP 1.5.1, 2.2.0, 2.1.1, 2.2.1, 3.0.8, 3.0.3, 4.1.1 (GPL) (http://www.courier-mta.org/imap/)
    • -
    • Critical Path (7.0.020) ()
    • +
    • Critical Path (7.0.020)
    • Cyrus IMAP 1.5, 1.6, 2.1, 2.1.15, 2.1.16, 2.1.18 2.2.1, 2.2.2-BETA, 2.2.3, 2.2.6, 2.2.10, 2.2.12, 2.2.13, @@ -635,7 +651,7 @@ I like it.
    • DBOX 2.41 System [host1] (http://www.dbox.handshake.de/).
    • Deerfield VisNetic MailServer 5.8.6 [host1] (http://www.deerfield.net/products/visnetic-mailserver/)
    • -
    • dkimap4 [host1] ()
    • +
    • dkimap4 [host1]
    • Domino (Notes) 4.61[host1], 6.5, 5.0.6, 5.0.7, 7.0.2, 6.0.2CF1, 7.0.1[host1], 8.0.1[host1] (http://www-01.ibm.com/software/lotus/products/notes/)
    • Dovecot 0.99.10.4, 0.99.14, 0.99.14-8.fc4, 1.0-0.beta2.7, @@ -684,7 +700,9 @@ I like it.
    • Samsung Contact IMAP server 8.5.0
    • Scalix v10.1, 10.0.1.3, 11.0.0.431, 11.4.6 (http://www.scalix.com/)
    • Sendmail Mail Store IMAP4rev1 (5.5.6/mstore-5-5-build-1874 [host1].
    • -
    • SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1]. (http://www.smartertools.com/)
    • +
    • SmarterMail, Smarter Mail 5.0 Enterprise, Smarter Mail 5.5 [host1], SmarterMail Professional 10.2 [host1], + Smarter Mail 11.7 [host1][host2]. + (http://www.smartertools.com/)
    • Softalk Workgroup Mail 7.6.4 [host1] (http://www.softalkltd.com/products/download_wm_v7.asp).
    • SunONE Messaging server 5.2, 6.0 (SUN JES - Java Enterprise System) (http://www.oracle.com/)
    • Sun Java(tm) System Messaging Server 6.2-2.05, 6.2-7.05, 6.3 (http://www.oracle.com/)
    • @@ -720,6 +738,8 @@ I like it.
    • wonko_imapsync: http://wonko.com/article/554
    • pop2imap: http://www.linux-france.org/prj/pop2imap/
    • exchange-away: http://exchange-away.sourceforge.net/
    • +
    • SyncBackPro http://www.2brightsparks.com/syncback/sbpro.html
    • +

    Online IMAP migration services

    @@ -766,7 +786,7 @@ alt="Viewable With Any Browser" /> This document last modified on -($Id: index.shtml,v 1.189 2013/12/25 11:35:38 gilles Exp gilles $) +($Id: index.shtml,v 1.195 2014/02/13 03:17:59 gilles Exp gilles $)

    diff --git a/perlcritic_2.out b/perlcritic_2.out index d316f5d..529d87e 100644 --- a/perlcritic_2.out +++ b/perlcritic_2.out @@ -6,594 +6,591 @@ Missing "INCOMPATIBILITIES" section in POD at line 1, column 1. See pages 133,1 Missing "BUGS AND LIMITATIONS" section in POD at line 1, column 1. See pages 133,138 of PBP. (Severity: 2) Missing "LICENSE AND COPYRIGHT" section in POD at line 1, column 1. See pages 133,138 of PBP. (Severity: 2) Main code has high complexity score (350) at line 1, column 1. Consider refactoring. (Severity: 3) -Magic punctuation variable used at line 553, column 3. See page 79 of PBP. (Severity: 2) -64 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 720, column 10. Unnamed numeric literals make code less maintainable. (Severity: 2) -Quotes used with an empty string at line 743, column 61. See page 53 of PBP. (Severity: 2) -5 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 771, column 48. Unnamed numeric literals make code less maintainable. (Severity: 2) -5 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 772, column 48. Unnamed numeric literals make code less maintainable. (Severity: 2) -Postfix control "if" used at line 781, column 15. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 782, column 21. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 788, column 25. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 794, column 24. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 804, column 27. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 815, column 17. See pages 93,94 of PBP. (Severity: 2) -100 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 818, column 13. Unnamed numeric literals make code less maintainable. (Severity: 2) -100 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 819, column 13. Unnamed numeric literals make code less maintainable. (Severity: 2) -993 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 822, column 24. Unnamed numeric literals make code less maintainable. (Severity: 2) -143 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 822, column 30. Unnamed numeric literals make code less maintainable. (Severity: 2) -993 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 825, column 24. Unnamed numeric literals make code less maintainable. (Severity: 2) -143 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 825, column 30. Unnamed numeric literals make code less maintainable. (Severity: 2) -Postfix control "if" used at line 827, column 31. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 828, column 12. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 842, column 5. See pages 93,94 of PBP. (Severity: 2) -3 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 867, column 21. Unnamed numeric literals make code less maintainable. (Severity: 2) -Long number not separated with underscores at line 954, column 20. See page 59 of PBP. (Severity: 2) -Postfix control "unless" used at line 956, column 57. See pages 96,97 of PBP. (Severity: 2) -Quotes used with an empty string at line 983, column 19. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 984, column 50. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 986, column 22. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 987, column 22. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 991, column 26. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 998, column 49. See page 53 of PBP. (Severity: 2) -Postfix control "unless" used at line 1023, column 43. See pages 96,97 of PBP. (Severity: 2) +Magic punctuation variable used at line 554, column 3. See page 79 of PBP. (Severity: 2) +64 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 722, column 10. Unnamed numeric literals make code less maintainable. (Severity: 2) +Quotes used with an empty string at line 745, column 61. See page 53 of PBP. (Severity: 2) +5 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 773, column 48. Unnamed numeric literals make code less maintainable. (Severity: 2) +5 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 774, column 48. Unnamed numeric literals make code less maintainable. (Severity: 2) +Postfix control "if" used at line 783, column 15. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 784, column 21. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 790, column 25. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 796, column 24. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 806, column 27. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 817, column 17. See pages 93,94 of PBP. (Severity: 2) +100 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 820, column 13. Unnamed numeric literals make code less maintainable. (Severity: 2) +100 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 821, column 13. Unnamed numeric literals make code less maintainable. (Severity: 2) +993 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 824, column 24. Unnamed numeric literals make code less maintainable. (Severity: 2) +143 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 824, column 30. Unnamed numeric literals make code less maintainable. (Severity: 2) +993 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 827, column 24. Unnamed numeric literals make code less maintainable. (Severity: 2) +143 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 827, column 30. Unnamed numeric literals make code less maintainable. (Severity: 2) +Postfix control "if" used at line 829, column 31. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 830, column 12. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 844, column 5. See pages 93,94 of PBP. (Severity: 2) +3 is not one of the allowed literal values (0, 1, 2). Use the Readonly module or the "constant" pragma instead at line 869, column 21. Unnamed numeric literals make code less maintainable. (Severity: 2) +Long number not separated with underscores at line 956, column 20. See page 59 of PBP. (Severity: 2) +Postfix control "unless" used at line 958, column 57. See pages 96,97 of PBP. (Severity: 2) +Quotes used with an empty string at line 985, column 19. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 986, column 50. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 988, column 22. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 989, column 22. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 993, column 26. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1000, column 49. See page 53 of PBP. (Severity: 2) Postfix control "unless" used at line 1025, column 43. See pages 96,97 of PBP. (Severity: 2) -Quotes used with an empty string at line 1028, column 34. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1029, column 34. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 1032, column 15. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 1094, column 33. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1094, column 33. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 1096, column 46. See page 53 of PBP. (Severity: 2) -Expression form of "map" at line 1096, column 51. See page 169 of PBP. (Severity: 4) -Regular expression without "/s" flag at line 1104, column 33. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1104, column 33. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 1106, column 46. See page 53 of PBP. (Severity: 2) -Expression form of "map" at line 1106, column 51. See page 169 of PBP. (Severity: 4) -Postfix control "if" used at line 1177, column 15. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1187, column 3. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1195, column 32. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1242, column 3. See page 97 of PBP. (Severity: 2) -"unless" block used at line 1250, column 3. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 1282, column 50. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1283, column 50. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 1293, column 39. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 1295, column 50. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 1305, column 49. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 1306, column 30. See page 228 of PBP. (Severity: 2) -Postfix control "if" used at line 1324, column 57. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1334, column 77. See pages 93,94 of PBP. (Severity: 2) -Double-sigil dereference at line 1337, column 2. See page 228 of PBP. (Severity: 2) -Postfix control "if" used at line 1342, column 5. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1346, column 3. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1349, column 2. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 1352, column 53. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 1387, column 79. See pages 93,94 of PBP. (Severity: 2) -Double-sigil dereference at line 1391, column 2. See page 228 of PBP. (Severity: 2) -Postfix control "if" used at line 1396, column 3. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1400, column 3. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1430, column 10. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1450, column 33. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1451, column 4. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1459, column 39. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1463, column 38. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1472, column 4. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 1474, column 45. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 1475, column 31. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1475, column 31. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 1477, column 7. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1478, column 32. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1479, column 5. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1487, column 52. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1488, column 4. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1496, column 39. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1500, column 38. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1509, column 4. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 1510, column 49. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 1511, column 31. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1511, column 31. See page 237 of PBP. (Severity: 2) -"unless" block used at line 1512, column 5. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1541, column 70. See pages 93,94 of PBP. (Severity: 2) -Code structure is deeply nested at line 1542, column 41. Consider refactoring. (Severity: 3) -"unless" block used at line 1542, column 41. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1553, column 39. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 1557, column 38. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 1621, column 47. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 1622, column 59. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1624, column 4. See page 97 of PBP. (Severity: 2) -Postfix control "if" used at line 1627, column 23. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 1661, column 3. See page 97 of PBP. (Severity: 2) -"unless" block used at line 1665, column 3. See page 97 of PBP. (Severity: 2) -Postfix control "unless" used at line 1697, column 20. See pages 96,97 of PBP. (Severity: 2) -Postfix control "unless" used at line 1698, column 20. See pages 96,97 of PBP. (Severity: 2) -Postfix control "if" used at line 1702, column 17. See pages 93,94 of PBP. (Severity: 2) -Too many arguments at line 1722, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 1732, column 58. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1733, column 58. See page 53 of PBP. (Severity: 2) -Too many arguments at line 1740, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 1750, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 1765, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1766, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1778, column 26. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1788, column 28. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 1796, column 17. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1796, column 17. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 1806, column 55. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1807, column 74. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 1812, column 58. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 1844, column 23. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1872, column 77. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1875, column 65. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1878, column 73. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1881, column 77. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1884, column 76. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1887, column 68. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1890, column 67. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1893, column 77. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1896, column 79. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1899, column 71. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1902, column 69. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1905, column 65. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1908, column 67. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1911, column 67. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 1914, column 69. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 1929, column 15. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 1929, column 15. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 1941, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 1948, column 5. See page 53 of PBP. (Severity: 2) -Too many arguments at line 1984, column 1. See page 182 of PBP. (Severity: 3) -Postfix control "if" used at line 1988, column 19. See pages 93,94 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 1993, column 17. See page 79 of PBP. (Severity: 2) -Postfix control "if" used at line 1998, column 29. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 2006, column 35. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2009, column 35. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 2023, column 14. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 2035, column 14. See pages 93,94 of PBP. (Severity: 2) -Too many arguments at line 2039, column 1. See page 182 of PBP. (Severity: 3) -Postfix control "if" used at line 2054, column 35. See pages 93,94 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2071, column 17. See page 79 of PBP. (Severity: 2) -Postfix control "if" used at line 2086, column 22. See pages 93,94 of PBP. (Severity: 2) -Too many arguments at line 2095, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 2106, column 38. See page 53 of PBP. (Severity: 2) -Postfix control "unless" used at line 2109, column 51. See pages 96,97 of PBP. (Severity: 2) -Postfix control "if" used at line 2113, column 32. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 2114, column 35. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 2116, column 32. See pages 93,94 of PBP. (Severity: 2) -"unless" block used at line 2120, column 2. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 2131, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2174, column 40. See page 53 of PBP. (Severity: 2) -Too many arguments at line 2185, column 1. See page 182 of PBP. (Severity: 3) -Postfix control "if" used at line 2196, column 19. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 2208, column 41. See pages 93,94 of PBP. (Severity: 2) -Numeric escapes in interpolated string at line 2221, column 30. See page 56 of PBP. (Severity: 2) -Quotes used with an empty string at line 2223, column 41. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2241, column 32. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2241, column 32. See page 237 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2254, column 65. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2257, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2260, column 39. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2269, column 82. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2278, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2278, column 45. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2278, column 61. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2281, column 22. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2284, column 39. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2295, column 41. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2308, column 29. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2314, column 5. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2323, column 26. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2324, column 8. See page 79 of PBP. (Severity: 2) -Return value of "close" ignored at line 2347, column 2. Check the return value of "close" for success. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2367, column 12. See page 79 of PBP. (Severity: 2) -Quotes used with an empty string at line 2375, column 14. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2377, column 79. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2378, column 79. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2389, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2390, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2391, column 6. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2393, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2394, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2395, column 6. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2397, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2398, column 25. See page 53 of PBP. (Severity: 2) +Postfix control "unless" used at line 1027, column 43. See pages 96,97 of PBP. (Severity: 2) +Quotes used with an empty string at line 1030, column 34. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1031, column 34. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 1099, column 33. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1099, column 33. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 1101, column 46. See page 53 of PBP. (Severity: 2) +Expression form of "map" at line 1101, column 51. See page 169 of PBP. (Severity: 4) +Regular expression without "/s" flag at line 1109, column 33. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1109, column 33. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 1111, column 46. See page 53 of PBP. (Severity: 2) +Expression form of "map" at line 1111, column 51. See page 169 of PBP. (Severity: 4) +Postfix control "if" used at line 1182, column 15. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1192, column 3. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1200, column 32. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1247, column 3. See page 97 of PBP. (Severity: 2) +"unless" block used at line 1255, column 3. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 1287, column 50. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1288, column 50. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 1298, column 39. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 1300, column 50. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 1310, column 49. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 1311, column 30. See page 228 of PBP. (Severity: 2) +Postfix control "if" used at line 1329, column 57. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1339, column 77. See pages 93,94 of PBP. (Severity: 2) +Double-sigil dereference at line 1342, column 2. See page 228 of PBP. (Severity: 2) +Postfix control "if" used at line 1347, column 5. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1351, column 3. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1354, column 2. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 1357, column 53. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 1392, column 79. See pages 93,94 of PBP. (Severity: 2) +Double-sigil dereference at line 1396, column 2. See page 228 of PBP. (Severity: 2) +Postfix control "if" used at line 1401, column 3. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1405, column 3. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1435, column 10. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1455, column 33. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1456, column 4. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1464, column 39. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1468, column 38. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1477, column 4. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 1479, column 45. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 1480, column 31. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1480, column 31. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 1482, column 7. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1483, column 32. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1484, column 5. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1492, column 52. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1493, column 4. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1501, column 39. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1505, column 38. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1514, column 4. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 1515, column 49. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 1516, column 31. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1516, column 31. See page 237 of PBP. (Severity: 2) +"unless" block used at line 1517, column 5. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1546, column 70. See pages 93,94 of PBP. (Severity: 2) +Code structure is deeply nested at line 1547, column 41. Consider refactoring. (Severity: 3) +"unless" block used at line 1547, column 41. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1558, column 39. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 1562, column 38. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 1626, column 47. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 1627, column 59. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1629, column 4. See page 97 of PBP. (Severity: 2) +Postfix control "if" used at line 1632, column 23. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 1666, column 3. See page 97 of PBP. (Severity: 2) +"unless" block used at line 1670, column 3. See page 97 of PBP. (Severity: 2) +Postfix control "unless" used at line 1702, column 20. See pages 96,97 of PBP. (Severity: 2) +Postfix control "unless" used at line 1703, column 20. See pages 96,97 of PBP. (Severity: 2) +Postfix control "if" used at line 1707, column 17. See pages 93,94 of PBP. (Severity: 2) +Too many arguments at line 1727, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 1737, column 58. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1738, column 58. See page 53 of PBP. (Severity: 2) +Too many arguments at line 1745, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 1755, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 1770, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1771, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1783, column 26. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1793, column 28. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 1801, column 17. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1801, column 17. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 1811, column 55. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1812, column 74. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 1817, column 58. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 1849, column 23. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1877, column 77. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1880, column 65. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1883, column 73. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1886, column 77. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1889, column 76. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1892, column 68. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1895, column 67. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1898, column 77. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1901, column 79. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1904, column 71. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1907, column 69. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1910, column 65. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1913, column 67. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1916, column 67. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 1919, column 69. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 1934, column 15. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 1934, column 15. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 1946, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 1953, column 5. See page 53 of PBP. (Severity: 2) +Too many arguments at line 1989, column 1. See page 182 of PBP. (Severity: 3) +Postfix control "if" used at line 1993, column 19. See pages 93,94 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 1998, column 17. See page 79 of PBP. (Severity: 2) +Quotes used with an empty string at line 2014, column 35. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2017, column 35. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 2031, column 14. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 2043, column 14. See pages 93,94 of PBP. (Severity: 2) +Too many arguments at line 2047, column 1. See page 182 of PBP. (Severity: 3) +Postfix control "if" used at line 2062, column 35. See pages 93,94 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2079, column 17. See page 79 of PBP. (Severity: 2) +Too many arguments at line 2106, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 2117, column 38. See page 53 of PBP. (Severity: 2) +Postfix control "unless" used at line 2120, column 51. See pages 96,97 of PBP. (Severity: 2) +Postfix control "if" used at line 2124, column 32. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 2125, column 35. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 2127, column 32. See pages 93,94 of PBP. (Severity: 2) +"unless" block used at line 2131, column 2. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 2142, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2185, column 40. See page 53 of PBP. (Severity: 2) +Too many arguments at line 2197, column 1. See page 182 of PBP. (Severity: 3) +Postfix control "if" used at line 2208, column 19. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 2220, column 41. See pages 93,94 of PBP. (Severity: 2) +Numeric escapes in interpolated string at line 2233, column 30. See page 56 of PBP. (Severity: 2) +Quotes used with an empty string at line 2235, column 41. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2253, column 32. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2253, column 32. See page 237 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2266, column 65. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2269, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2272, column 39. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2281, column 82. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2290, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2290, column 45. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2290, column 61. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2293, column 22. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2296, column 39. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2307, column 41. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2320, column 29. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2326, column 5. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2335, column 26. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2336, column 8. See page 79 of PBP. (Severity: 2) +Return value of "close" ignored at line 2359, column 2. Check the return value of "close" for success. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2379, column 12. See page 79 of PBP. (Severity: 2) +Quotes used with an empty string at line 2387, column 14. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2389, column 79. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2390, column 79. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2401, column 25. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2402, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2403, column 6. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2405, column 25. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2406, column 25. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2407, column 6. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2409, column 25. See page 53 of PBP. (Severity: 2) Quotes used with an empty string at line 2410, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2411, column 6. See page 53 of PBP. (Severity: 2) -Reused variable name in lexical scope: $imap2 at line 2477, column 9. Invent unique variable names. (Severity: 3) -Regular expression without "/s" flag at line 2493, column 20. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/x" flag at line 2493, column 20. See page 236 of PBP. (Severity: 3) -Regular expression without "/m" flag at line 2493, column 20. See page 237 of PBP. (Severity: 2) -Mixed high and low-precedence booleans at line 2494, column 12. See page 70 of PBP. (Severity: 4) -Quotes used with an empty string at line 2494, column 24. See page 53 of PBP. (Severity: 2) -List of quoted literal words at line 2546, column 17. Use 'qw()' instead. (Severity: 2) -List of quoted literal words at line 2547, column 17. Use 'qw()' instead. (Severity: 2) -Double-sigil dereference at line 2612, column 28. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 2616, column 26. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 2625, column 36. See page 228 of PBP. (Severity: 2) -Quotes used with an empty string at line 2676, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2677, column 37. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2759, column 49. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2769, column 21. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2777, column 38. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2778, column 38. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2778, column 42. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2780, column 6. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2780, column 30. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2780, column 34. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2780, column 38. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2781, column 46. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2781, column 50. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2782, column 46. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2782, column 51. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2783, column 48. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2783, column 53. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2784, column 48. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2784, column 53. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2785, column 48. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2785, column 53. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2786, column 50. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2786, column 55. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2788, column 50. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2788, column 55. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2790, column 50. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2790, column 55. See page 53 of PBP. (Severity: 2) -Numeric escapes in interpolated string at line 2800, column 12. See page 56 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2803, column 14. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2803, column 14. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2804, column 14. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2804, column 14. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2805, column 14. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2805, column 14. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2806, column 21. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2806, column 21. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 2806, column 30. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2806, column 49. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2806, column 74. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2813, column 27. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2814, column 11. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2815, column 11. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2826, column 4. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2826, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2833, column 4. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2833, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2848, column 4. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2848, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2855, column 11. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2856, column 11. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2857, column 4. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2857, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2864, column 14. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2878, column 13. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2878, column 13. See page 237 of PBP. (Severity: 2) -Postfix control "unless" used at line 2884, column 4. See pages 96,97 of PBP. (Severity: 2) -Use 'eq' or hash instead of fixed-pattern regexps at line 2884, column 62. See pages 271,272 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2884, column 62. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2884, column 62. See page 237 of PBP. (Severity: 2) -Expression form of "eval" at line 2890, column 13. See page 161 of PBP. (Severity: 5) -Magic punctuation variable used at line 2892, column 49. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2893, column 14. See page 79 of PBP. (Severity: 2) -Quotes used with an empty string at line 2901, column 28. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2901, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2901, column 57. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2902, column 28. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 2910, column 42. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 2910, column 42. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 2911, column 17. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 2911, column 21. See page 53 of PBP. (Severity: 2) -"unless" block used at line 2937, column 3. See page 97 of PBP. (Severity: 2) -Double-sigil dereference at line 2949, column 3. See page 228 of PBP. (Severity: 2) -Postfix control "if" used at line 2949, column 35. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2952, column 71. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2952, column 71. See page 79 of PBP. (Severity: 2) -Quotes used with a noisy string at line 2955, column 100. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 2955, column 100. See page 79 of PBP. (Severity: 2) -Double-sigil dereference at line 2957, column 15. See page 228 of PBP. (Severity: 2) -Quotes used with an empty string at line 3001, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3001, column 23. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3005, column 41. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3064, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3075, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3075, column 23. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3076, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3090, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3090, column 23. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3092, column 5. See page 53 of PBP. (Severity: 2) -Expression form of "eval" at line 3108, column 13. See page 161 of PBP. (Severity: 5) -Magic punctuation variable used at line 3110, column 45. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 3111, column 10. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 3122, column 14. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 3124, column 14. See page 79 of PBP. (Severity: 2) -Double-sigil dereference at line 3125, column 37. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3125, column 54. See page 228 of PBP. (Severity: 2) -"unless" block used at line 3131, column 4. See page 97 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 3134, column 16. See page 79 of PBP. (Severity: 2) -Quotes used with an empty string at line 3145, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3155, column 5. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3163, column 17. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3163, column 17. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3166, column 28. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3166, column 28. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 3167, column 23. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3172, column 17. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3178, column 6. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3191, column 21. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3191, column 21. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 3192, column 44. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3195, column 24. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3203, column 21. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3203, column 21. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 3204, column 40. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3207, column 24. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 3229, column 67. See pages 93,94 of PBP. (Severity: 2) -Subroutine "select_msgs" does not end with "return" at line 3249, column 1. See page 197 of PBP. (Severity: 4) -Long number not separated with underscores at line 3333, column 63. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 3334, column 63. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 3355, column 45. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 3358, column 46. See page 59 of PBP. (Severity: 2) -Double-sigil dereference at line 3369, column 9. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3370, column 9. See page 228 of PBP. (Severity: 2) -"unless" block used at line 3373, column 3. See page 97 of PBP. (Severity: 2) -"unless" block used at line 3374, column 3. See page 97 of PBP. (Severity: 2) -Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3388, column 1. See page 197 of PBP. (Severity: 4) -Postfix control "if" used at line 3436, column 22. See pages 93,94 of PBP. (Severity: 2) -Subroutine "copy_message" with high complexity score (24) at line 3465, column 1. Consider refactoring. (Severity: 3) -Too many arguments at line 3465, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 3472, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3473, column 61. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 3481, column 41. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 3482, column 95. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 3518, column 19. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 3518, column 35. See page 53 of PBP. (Severity: 2) -Too many arguments at line 3533, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 3538, column 60. See page 53 of PBP. (Severity: 2) -"unless" block used at line 3540, column 2. See page 97 of PBP. (Severity: 2) -Quotes used with an empty string at line 3543, column 24. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 3545, column 34. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 3570, column 3. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 3573, column 49. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3581, column 16. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3603, column 15. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3603, column 15. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 3608, column 37. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 3609, column 64. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 3616, column 16. See page 53 of PBP. (Severity: 2) -Subroutine "tests_subject" does not end with "return" at line 3627, column 1. See page 197 of PBP. (Severity: 4) -Quotes used with an empty string at line 3628, column 6. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3628, column 21. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3668, column 6. See page 53 of PBP. (Severity: 2) -Too many arguments at line 3690, column 1. See page 182 of PBP. (Severity: 3) -Quotes used with an empty string at line 3699, column 58. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3711, column 20. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3711, column 20. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3726, column 75. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3726, column 75. See page 237 of PBP. (Severity: 2) -Subroutine "sleep_if_needed" does not end with "return" at line 3746, column 1. See page 197 of PBP. (Severity: 4) -Reused variable name in lexical scope: $total_bytes_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $nb_msg_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $nb_msg_transferred at line 3759, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $maxmessagespersecond at line 3759, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $total_bytes_transferred at line 3780, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $maxbytespersecond at line 3780, column 9. Invent unique variable names. (Severity: 3) -Postfix control "if" used at line 3808, column 28. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 3816, column 10. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 3849, column 2. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3849, column 22. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3850, column 2. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3850, column 22. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3852, column 26. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3909, column 37. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 3910, column 37. See page 228 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 3923, column 23. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 3923, column 23. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 3950, column 50. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 3997, column 35. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3997, column 46. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3997, column 57. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3997, column 68. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3997, column 79. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 35. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 46. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 57. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 68. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 79. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 3998, column 90. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 4002, column 37. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 4003, column 37. See page 228 of PBP. (Severity: 2) -Quotes used with an empty string at line 4045, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4045, column 43. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4045, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4045, column 65. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4045, column 76. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 43. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 65. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 76. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4046, column 87. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 4049, column 34. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 4050, column 34. See page 228 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4065, column 16. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4065, column 16. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 4078, column 47. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 4110, column 78. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 4111, column 21. See page 228 of PBP. (Severity: 2) -Quotes used with an empty string at line 4114, column 102. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4123, column 29. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 4123, column 29. See page 79 of PBP. (Severity: 2) -Quotes used with an empty string at line 4162, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4163, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4167, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4168, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4169, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4213, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4214, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4215, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4219, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4220, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4221, column 24. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4248, column 49. See page 53 of PBP. (Severity: 2) -Mismatched operator at line 4248, column 75. Numeric/string operators and operands should match. (Severity: 3) -Quotes used with an empty string at line 4297, column 33. See page 53 of PBP. (Severity: 2) -Hard tabs used at line 4332, column 10. See page 20 of PBP. (Severity: 3) -Quotes used with an empty string at line 4367, column 43. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4368, column 44. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4369, column 48. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4380, column 25. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4381, column 25. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4397, column 21. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4397, column 21. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4399, column 20. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4399, column 20. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4423, column 13. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4423, column 13. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 4429, column 5. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4429, column 32. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4429, column 36. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4430, column 46. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4431, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4434, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 4435, column 60. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4456, column 15. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4457, column 15. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4473, column 15. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4474, column 15. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4477, column 15. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4486, column 15. See page 53 of PBP. (Severity: 2) -Expression form of "eval" at line 4603, column 13. See page 161 of PBP. (Severity: 5) -Magic punctuation variable used at line 4605, column 38. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 4606, column 10. See page 79 of PBP. (Severity: 2) -Long number not separated with underscores at line 4619, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4620, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4622, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4623, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4625, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4626, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4628, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4629, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4631, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4632, column 46. See page 59 of PBP. (Severity: 2) -Long number not separated with underscores at line 4634, column 49. See page 59 of PBP. (Severity: 2) -Quotes used with an empty string at line 4643, column 23. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 4688, column 65. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 4747, column 31. See pages 93,94 of PBP. (Severity: 2) -Too many arguments at line 4758, column 1. See page 182 of PBP. (Severity: 3) -Double-sigil dereference at line 4762, column 29. See page 228 of PBP. (Severity: 2) -Double-sigil dereference at line 4773, column 43. See page 228 of PBP. (Severity: 2) -Postfix control "unless" used at line 4796, column 29. See pages 96,97 of PBP. (Severity: 2) -Double-sigil dereference at line 4822, column 29. See page 228 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4833, column 30. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4833, column 30. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4848, column 24. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4848, column 24. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4851, column 24. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4851, column 24. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4854, column 24. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4854, column 24. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4857, column 24. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4857, column 24. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4860, column 98. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4860, column 98. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 4873, column 37. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 4873, column 41. See page 53 of PBP. (Severity: 2) -Numeric escapes in interpolated string at line 4878, column 51. See page 56 of PBP. (Severity: 2) -Quotes used with an empty string at line 4888, column 21. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 4890, column 52. See page 79 of PBP. (Severity: 2) -Return value of "close" ignored at line 4892, column 9. Check the return value of "close" for success. (Severity: 2) -Magic punctuation variable used in interpolated string at line 4901, column 46. See page 79 of PBP. (Severity: 2) -Return value of "close" ignored at line 4903, column 2. Check the return value of "close" for success. (Severity: 2) -Quotes used with an empty string at line 4904, column 14. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated string at line 4910, column 67. See page 79 of PBP. (Severity: 2) -Return value of "close" ignored at line 4912, column 2. Check the return value of "close" for success. (Severity: 2) -Regular expression without "/s" flag at line 4927, column 21. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4927, column 21. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 4951, column 24. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 4951, column 24. See page 237 of PBP. (Severity: 2) -Magic punctuation variable used at line 4968, column 18. See page 79 of PBP. (Severity: 2) -Return value of "close" ignored at line 4991, column 2. Check the return value of "close" for success. (Severity: 2) -Magic punctuation variable used in interpolated string at line 5011, column 20. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used at line 5025, column 23. See page 79 of PBP. (Severity: 2) -Magic punctuation variable used at line 5027, column 7. See page 79 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5027, column 13. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5027, column 13. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 5042, column 20. See page 53 of PBP. (Severity: 2) -Quotes used with an empty string at line 5044, column 11. See page 53 of PBP. (Severity: 2) -String delimiter used with "split" at line 5096, column 28. Express it as a regex instead. (Severity: 2) -Quotes used with a noisy string at line 5096, column 34. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5159, column 17. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5159, column 17. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5168, column 17. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5168, column 17. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 5206, column 13. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5209, column 17. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5209, column 17. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5212, column 16. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 5212, column 30. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 5213, column 22. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5218, column 12. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5218, column 12. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5230, column 38. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5230, column 72. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5230, column 72. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5231, column 38. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 5233, column 46. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 5237, column 30. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 5239, column 34. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5244, column 12. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5244, column 12. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5260, column 19. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5260, column 19. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5273, column 12. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5273, column 12. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5279, column 29. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5285, column 12. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5285, column 12. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5296, column 12. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5296, column 12. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 5317, column 5. See page 53 of PBP. (Severity: 2) -Double-sigil dereference at line 5369, column 33. See page 228 of PBP. (Severity: 2) -Expression form of "eval" at line 5390, column 43. See page 161 of PBP. (Severity: 5) -Expression form of "eval" at line 5394, column 45. See page 161 of PBP. (Severity: 5) -Postfix control "if" used at line 5399, column 34. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 5400, column 36. See pages 93,94 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5414, column 33. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5414, column 33. See page 237 of PBP. (Severity: 2) -Quotes used with an empty string at line 5415, column 36. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5453, column 27. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5453, column 27. See page 237 of PBP. (Severity: 2) -Use 'eq' or hash instead of fixed-pattern regexps at line 5457, column 36. See pages 271,272 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5457, column 36. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5457, column 36. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5459, column 31. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5459, column 31. See page 237 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5465, column 34. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5465, column 34. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5468, column 65. See pages 93,94 of PBP. (Severity: 2) -Quotes used with an empty string at line 5594, column 17. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5599, column 20. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5599, column 20. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 5605, column 28. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 5605, column 33. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 5606, column 28. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 5606, column 33. See page 53 of PBP. (Severity: 2) -Long number not separated with underscores at line 5639, column 55. See page 59 of PBP. (Severity: 2) -"$i" is declared but not used at line 5658, column 9. Unused variables clutter code and make it harder to read. (Severity: 3) -Quotes used with an empty string at line 5669, column 28. See page 53 of PBP. (Severity: 2) -Long number not separated with underscores at line 5677, column 40. See page 59 of PBP. (Severity: 2) -Quotes used with an empty string at line 5689, column 25. See page 53 of PBP. (Severity: 2) -Postfix control "if" used at line 5690, column 43. See pages 93,94 of PBP. (Severity: 2) -Quotes used with a noisy string at line 5691, column 54. See page 53 of PBP. (Severity: 2) -Quotes used with a noisy string at line 5691, column 60. See page 53 of PBP. (Severity: 2) -Magic punctuation variable used in interpolated here-document at line 5692, column 15. See page 79 of PBP. (Severity: 2) -Quotes used with a noisy string at line 5941, column 20. See page 53 of PBP. (Severity: 2) -Regular expression without "/s" flag at line 5946, column 14. See pages 240,241 of PBP. (Severity: 2) -Regular expression without "/m" flag at line 5946, column 14. See page 237 of PBP. (Severity: 2) -Postfix control "if" used at line 6089, column 49. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 6102, column 12. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 6106, column 32. See pages 93,94 of PBP. (Severity: 2) -Postfix control "unless" used at line 6109, column 30. See pages 96,97 of PBP. (Severity: 2) -Postfix control "if" used at line 6117, column 32. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 6128, column 32. See pages 93,94 of PBP. (Severity: 2) -Postfix control "if" used at line 6195, column 33. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 2413, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2414, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2417, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2418, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2419, column 6. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2421, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2422, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2423, column 6. See page 53 of PBP. (Severity: 2) +Reused variable name in lexical scope: $imap2 at line 2489, column 9. Invent unique variable names. (Severity: 3) +Regular expression without "/s" flag at line 2505, column 20. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/x" flag at line 2505, column 20. See page 236 of PBP. (Severity: 3) +Regular expression without "/m" flag at line 2505, column 20. See page 237 of PBP. (Severity: 2) +Mixed high and low-precedence booleans at line 2506, column 12. See page 70 of PBP. (Severity: 4) +Quotes used with an empty string at line 2506, column 24. See page 53 of PBP. (Severity: 2) +List of quoted literal words at line 2558, column 17. Use 'qw()' instead. (Severity: 2) +List of quoted literal words at line 2559, column 17. Use 'qw()' instead. (Severity: 2) +Double-sigil dereference at line 2624, column 28. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 2628, column 26. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 2637, column 36. See page 228 of PBP. (Severity: 2) +Quotes used with an empty string at line 2688, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2689, column 37. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2798, column 49. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2808, column 21. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2816, column 38. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2817, column 38. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2817, column 42. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2819, column 6. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2819, column 30. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2819, column 34. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2819, column 38. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2820, column 46. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2820, column 50. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2821, column 46. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2821, column 51. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2822, column 48. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2822, column 53. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2823, column 48. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2823, column 53. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2824, column 48. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2824, column 53. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2825, column 50. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2825, column 55. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2827, column 50. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2827, column 55. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2829, column 50. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2829, column 55. See page 53 of PBP. (Severity: 2) +Numeric escapes in interpolated string at line 2839, column 12. See page 56 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2842, column 14. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2842, column 14. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2843, column 14. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2843, column 14. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2844, column 14. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2844, column 14. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2845, column 21. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2845, column 21. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 2845, column 30. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2845, column 49. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2845, column 74. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2852, column 27. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2853, column 11. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2854, column 11. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2865, column 4. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2865, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2872, column 4. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2872, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2887, column 4. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2887, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2894, column 11. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2895, column 11. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2896, column 4. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2896, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2903, column 14. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2917, column 13. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2917, column 13. See page 237 of PBP. (Severity: 2) +Postfix control "unless" used at line 2923, column 4. See pages 96,97 of PBP. (Severity: 2) +Use 'eq' or hash instead of fixed-pattern regexps at line 2923, column 62. See pages 271,272 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2923, column 62. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2923, column 62. See page 237 of PBP. (Severity: 2) +Expression form of "eval" at line 2929, column 13. See page 161 of PBP. (Severity: 5) +Magic punctuation variable used at line 2931, column 49. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2932, column 14. See page 79 of PBP. (Severity: 2) +Quotes used with an empty string at line 2940, column 28. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2940, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2940, column 57. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2941, column 28. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 2949, column 42. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 2949, column 42. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 2950, column 17. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 2950, column 21. See page 53 of PBP. (Severity: 2) +"unless" block used at line 2976, column 3. See page 97 of PBP. (Severity: 2) +Double-sigil dereference at line 2989, column 3. See page 228 of PBP. (Severity: 2) +Postfix control "if" used at line 2989, column 35. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2992, column 71. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2992, column 71. See page 79 of PBP. (Severity: 2) +Quotes used with a noisy string at line 2995, column 100. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 2995, column 100. See page 79 of PBP. (Severity: 2) +Double-sigil dereference at line 2997, column 15. See page 228 of PBP. (Severity: 2) +Quotes used with an empty string at line 3041, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3041, column 23. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3045, column 41. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3104, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3115, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3115, column 23. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3116, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3130, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3130, column 23. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3132, column 5. See page 53 of PBP. (Severity: 2) +Expression form of "eval" at line 3148, column 13. See page 161 of PBP. (Severity: 5) +Magic punctuation variable used at line 3150, column 45. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 3151, column 10. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 3162, column 14. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 3164, column 14. See page 79 of PBP. (Severity: 2) +Double-sigil dereference at line 3165, column 37. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3165, column 54. See page 228 of PBP. (Severity: 2) +"unless" block used at line 3171, column 4. See page 97 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 3174, column 16. See page 79 of PBP. (Severity: 2) +Quotes used with an empty string at line 3185, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3195, column 5. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3203, column 17. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3203, column 17. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3206, column 28. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3206, column 28. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 3207, column 23. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3212, column 17. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3218, column 6. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3231, column 21. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3231, column 21. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 3232, column 44. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3235, column 24. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3243, column 21. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3243, column 21. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 3244, column 40. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3247, column 24. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 3269, column 67. See pages 93,94 of PBP. (Severity: 2) +Subroutine "select_msgs" does not end with "return" at line 3289, column 1. See page 197 of PBP. (Severity: 4) +Long number not separated with underscores at line 3373, column 63. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 3374, column 63. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 3395, column 45. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 3398, column 46. See page 59 of PBP. (Severity: 2) +Double-sigil dereference at line 3409, column 9. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3410, column 9. See page 228 of PBP. (Severity: 2) +"unless" block used at line 3413, column 3. See page 97 of PBP. (Severity: 2) +"unless" block used at line 3414, column 3. See page 97 of PBP. (Severity: 2) +Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3428, column 1. See page 197 of PBP. (Severity: 4) +Postfix control "if" used at line 3476, column 22. See pages 93,94 of PBP. (Severity: 2) +Subroutine "copy_message" with high complexity score (30) at line 3505, column 1. Consider refactoring. (Severity: 3) +Too many arguments at line 3505, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 3512, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3513, column 61. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 3523, column 41. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 3524, column 95. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 3579, column 19. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 3579, column 35. See page 53 of PBP. (Severity: 2) +Too many arguments at line 3596, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 3601, column 60. See page 53 of PBP. (Severity: 2) +"unless" block used at line 3603, column 2. See page 97 of PBP. (Severity: 2) +Quotes used with an empty string at line 3606, column 24. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 3608, column 34. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 3633, column 3. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 3636, column 49. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3644, column 16. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3666, column 15. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3666, column 15. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 3671, column 37. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 3672, column 64. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 3679, column 16. See page 53 of PBP. (Severity: 2) +Subroutine "tests_subject" does not end with "return" at line 3690, column 1. See page 197 of PBP. (Severity: 4) +Quotes used with an empty string at line 3691, column 6. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3691, column 21. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 3731, column 6. See page 53 of PBP. (Severity: 2) +Too many arguments at line 3753, column 1. See page 182 of PBP. (Severity: 3) +Quotes used with an empty string at line 3762, column 58. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3774, column 20. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3774, column 20. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3789, column 75. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3789, column 75. See page 237 of PBP. (Severity: 2) +Subroutine "sleep_if_needed" does not end with "return" at line 3809, column 1. See page 197 of PBP. (Severity: 4) +Reused variable name in lexical scope: $total_bytes_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $nb_msg_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $nb_msg_transferred at line 3822, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $maxmessagespersecond at line 3822, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $total_bytes_transferred at line 3843, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $maxbytespersecond at line 3843, column 9. Invent unique variable names. (Severity: 3) +Postfix control "if" used at line 3871, column 28. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 3879, column 10. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 3912, column 2. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3912, column 22. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3913, column 2. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3913, column 22. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3915, column 26. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3972, column 37. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 3973, column 37. See page 228 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 3986, column 23. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 3986, column 23. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 4013, column 50. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 4060, column 35. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4060, column 46. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4060, column 57. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4060, column 68. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4060, column 79. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 35. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 46. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 57. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 68. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 79. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4061, column 90. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 4065, column 37. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 4066, column 37. See page 228 of PBP. (Severity: 2) +Quotes used with an empty string at line 4108, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4108, column 43. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4108, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4108, column 65. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4108, column 76. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 43. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 65. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 76. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4109, column 87. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 4112, column 34. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 4113, column 34. See page 228 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4128, column 16. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4128, column 16. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 4141, column 47. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 4173, column 78. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 4174, column 21. See page 228 of PBP. (Severity: 2) +Quotes used with an empty string at line 4177, column 102. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4186, column 29. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 4186, column 29. See page 79 of PBP. (Severity: 2) +Quotes used with an empty string at line 4225, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4226, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4230, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4231, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4232, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4276, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4277, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4278, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4282, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4283, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4284, column 24. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4311, column 49. See page 53 of PBP. (Severity: 2) +Mismatched operator at line 4311, column 75. Numeric/string operators and operands should match. (Severity: 3) +Quotes used with an empty string at line 4360, column 33. See page 53 of PBP. (Severity: 2) +Hard tabs used at line 4395, column 10. See page 20 of PBP. (Severity: 3) +Quotes used with an empty string at line 4430, column 43. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4431, column 44. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4432, column 48. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4443, column 25. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4444, column 25. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4460, column 21. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4460, column 21. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4462, column 20. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4462, column 20. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4486, column 13. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4486, column 13. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 4492, column 5. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4492, column 32. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4492, column 36. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4493, column 46. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4494, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4497, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 4498, column 60. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4519, column 15. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4520, column 15. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4536, column 15. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4537, column 15. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4540, column 15. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4549, column 15. See page 53 of PBP. (Severity: 2) +Expression form of "eval" at line 4666, column 13. See page 161 of PBP. (Severity: 5) +Magic punctuation variable used at line 4668, column 38. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 4669, column 10. See page 79 of PBP. (Severity: 2) +Long number not separated with underscores at line 4682, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4683, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4685, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4686, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4688, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4689, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4691, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4692, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4694, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4695, column 46. See page 59 of PBP. (Severity: 2) +Long number not separated with underscores at line 4697, column 49. See page 59 of PBP. (Severity: 2) +Quotes used with an empty string at line 4706, column 23. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 4751, column 65. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 4810, column 31. See pages 93,94 of PBP. (Severity: 2) +Too many arguments at line 4821, column 1. See page 182 of PBP. (Severity: 3) +Double-sigil dereference at line 4825, column 29. See page 228 of PBP. (Severity: 2) +Double-sigil dereference at line 4836, column 43. See page 228 of PBP. (Severity: 2) +Postfix control "unless" used at line 4859, column 29. See pages 96,97 of PBP. (Severity: 2) +Double-sigil dereference at line 4885, column 29. See page 228 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4896, column 30. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4896, column 30. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4911, column 24. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4911, column 24. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4914, column 24. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4914, column 24. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4917, column 24. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4917, column 24. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4920, column 24. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4920, column 24. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 4923, column 98. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4923, column 98. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 4936, column 37. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 4936, column 41. See page 53 of PBP. (Severity: 2) +Numeric escapes in interpolated string at line 4941, column 51. See page 56 of PBP. (Severity: 2) +Quotes used with an empty string at line 4951, column 21. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 4953, column 52. See page 79 of PBP. (Severity: 2) +Return value of "close" ignored at line 4955, column 9. Check the return value of "close" for success. (Severity: 2) +Magic punctuation variable used in interpolated string at line 4964, column 46. See page 79 of PBP. (Severity: 2) +Return value of "close" ignored at line 4966, column 2. Check the return value of "close" for success. (Severity: 2) +Quotes used with an empty string at line 4967, column 14. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated string at line 4973, column 67. See page 79 of PBP. (Severity: 2) +Return value of "close" ignored at line 4975, column 2. Check the return value of "close" for success. (Severity: 2) +Regular expression without "/s" flag at line 4990, column 21. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 4990, column 21. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5014, column 24. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5014, column 24. See page 237 of PBP. (Severity: 2) +Magic punctuation variable used at line 5031, column 18. See page 79 of PBP. (Severity: 2) +Return value of "close" ignored at line 5054, column 2. Check the return value of "close" for success. (Severity: 2) +Magic punctuation variable used in interpolated string at line 5074, column 20. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used at line 5088, column 23. See page 79 of PBP. (Severity: 2) +Magic punctuation variable used at line 5090, column 7. See page 79 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5090, column 13. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5090, column 13. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 5105, column 20. See page 53 of PBP. (Severity: 2) +Quotes used with an empty string at line 5107, column 11. See page 53 of PBP. (Severity: 2) +String delimiter used with "split" at line 5159, column 28. Express it as a regex instead. (Severity: 2) +Quotes used with a noisy string at line 5159, column 34. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5222, column 17. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5222, column 17. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5231, column 17. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5231, column 17. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 5269, column 13. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5272, column 17. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5272, column 17. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5275, column 16. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 5275, column 30. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 5276, column 22. See pages 93,94 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5281, column 12. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5281, column 12. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5293, column 38. See pages 93,94 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5293, column 72. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5293, column 72. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5294, column 38. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 5296, column 46. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 5300, column 30. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 5302, column 34. See pages 93,94 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5307, column 12. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5307, column 12. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5323, column 19. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5323, column 19. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5336, column 12. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5336, column 12. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5342, column 29. See pages 93,94 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5348, column 12. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5348, column 12. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5359, column 12. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5359, column 12. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 5380, column 5. See page 53 of PBP. (Severity: 2) +Double-sigil dereference at line 5432, column 33. See page 228 of PBP. (Severity: 2) +Expression form of "eval" at line 5453, column 43. See page 161 of PBP. (Severity: 5) +Expression form of "eval" at line 5457, column 45. See page 161 of PBP. (Severity: 5) +Postfix control "if" used at line 5462, column 34. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 5463, column 36. See pages 93,94 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5477, column 33. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5477, column 33. See page 237 of PBP. (Severity: 2) +Quotes used with an empty string at line 5478, column 36. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5516, column 27. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5516, column 27. See page 237 of PBP. (Severity: 2) +Use 'eq' or hash instead of fixed-pattern regexps at line 5520, column 36. See pages 271,272 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5520, column 36. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5520, column 36. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5522, column 31. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5522, column 31. See page 237 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5528, column 34. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5528, column 34. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5531, column 65. See pages 93,94 of PBP. (Severity: 2) +Quotes used with an empty string at line 5657, column 17. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 5662, column 20. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 5662, column 20. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 5668, column 28. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 5668, column 33. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 5669, column 28. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 5669, column 33. See page 53 of PBP. (Severity: 2) +Long number not separated with underscores at line 5702, column 55. See page 59 of PBP. (Severity: 2) +"$i" is declared but not used at line 5721, column 9. Unused variables clutter code and make it harder to read. (Severity: 3) +Quotes used with an empty string at line 5732, column 28. See page 53 of PBP. (Severity: 2) +Long number not separated with underscores at line 5740, column 40. See page 59 of PBP. (Severity: 2) +Quotes used with an empty string at line 5752, column 25. See page 53 of PBP. (Severity: 2) +Postfix control "if" used at line 5753, column 43. See pages 93,94 of PBP. (Severity: 2) +Quotes used with a noisy string at line 5754, column 54. See page 53 of PBP. (Severity: 2) +Quotes used with a noisy string at line 5754, column 60. See page 53 of PBP. (Severity: 2) +Magic punctuation variable used in interpolated here-document at line 5755, column 15. See page 79 of PBP. (Severity: 2) +Quotes used with a noisy string at line 6004, column 20. See page 53 of PBP. (Severity: 2) +Regular expression without "/s" flag at line 6009, column 14. See pages 240,241 of PBP. (Severity: 2) +Regular expression without "/m" flag at line 6009, column 14. See page 237 of PBP. (Severity: 2) +Postfix control "if" used at line 6154, column 49. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 6167, column 12. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 6171, column 32. See pages 93,94 of PBP. (Severity: 2) +Postfix control "unless" used at line 6174, column 30. See pages 96,97 of PBP. (Severity: 2) +Postfix control "if" used at line 6182, column 32. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 6193, column 32. See pages 93,94 of PBP. (Severity: 2) +Postfix control "if" used at line 6260, column 33. See pages 93,94 of PBP. (Severity: 2) diff --git a/perlcritic_3.out b/perlcritic_3.out index 48ebaff..a890792 100644 --- a/perlcritic_3.out +++ b/perlcritic_3.out @@ -1,37 +1,37 @@ Main code has high complexity score (350) at line 1, column 1. Consider refactoring. (Severity: 3) -Expression form of "map" at line 1096, column 51. See page 169 of PBP. (Severity: 4) -Expression form of "map" at line 1106, column 51. See page 169 of PBP. (Severity: 4) -Code structure is deeply nested at line 1542, column 41. Consider refactoring. (Severity: 3) -Too many arguments at line 1722, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 1740, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 1750, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 1984, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 2039, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 2095, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 2185, column 1. See page 182 of PBP. (Severity: 3) -Reused variable name in lexical scope: $imap2 at line 2477, column 9. Invent unique variable names. (Severity: 3) -Regular expression without "/x" flag at line 2493, column 20. See page 236 of PBP. (Severity: 3) -Mixed high and low-precedence booleans at line 2494, column 12. See page 70 of PBP. (Severity: 4) -Expression form of "eval" at line 2890, column 13. See page 161 of PBP. (Severity: 5) -Expression form of "eval" at line 3108, column 13. See page 161 of PBP. (Severity: 5) -Subroutine "select_msgs" does not end with "return" at line 3249, column 1. See page 197 of PBP. (Severity: 4) -Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3388, column 1. See page 197 of PBP. (Severity: 4) -Subroutine "copy_message" with high complexity score (24) at line 3465, column 1. Consider refactoring. (Severity: 3) -Too many arguments at line 3465, column 1. See page 182 of PBP. (Severity: 3) -Too many arguments at line 3533, column 1. See page 182 of PBP. (Severity: 3) -Subroutine "tests_subject" does not end with "return" at line 3627, column 1. See page 197 of PBP. (Severity: 4) -Too many arguments at line 3690, column 1. See page 182 of PBP. (Severity: 3) -Subroutine "sleep_if_needed" does not end with "return" at line 3746, column 1. See page 197 of PBP. (Severity: 4) -Reused variable name in lexical scope: $total_bytes_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $nb_msg_transferred at line 3747, column 2. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $nb_msg_transferred at line 3759, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $maxmessagespersecond at line 3759, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $total_bytes_transferred at line 3780, column 9. Invent unique variable names. (Severity: 3) -Reused variable name in lexical scope: $maxbytespersecond at line 3780, column 9. Invent unique variable names. (Severity: 3) -Mismatched operator at line 4248, column 75. Numeric/string operators and operands should match. (Severity: 3) -Hard tabs used at line 4332, column 10. See page 20 of PBP. (Severity: 3) -Expression form of "eval" at line 4603, column 13. See page 161 of PBP. (Severity: 5) -Too many arguments at line 4758, column 1. See page 182 of PBP. (Severity: 3) -Expression form of "eval" at line 5390, column 43. See page 161 of PBP. (Severity: 5) -Expression form of "eval" at line 5394, column 45. See page 161 of PBP. (Severity: 5) -"$i" is declared but not used at line 5658, column 9. Unused variables clutter code and make it harder to read. (Severity: 3) +Expression form of "map" at line 1101, column 51. See page 169 of PBP. (Severity: 4) +Expression form of "map" at line 1111, column 51. See page 169 of PBP. (Severity: 4) +Code structure is deeply nested at line 1547, column 41. Consider refactoring. (Severity: 3) +Too many arguments at line 1727, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 1745, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 1755, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 1989, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 2047, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 2106, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 2197, column 1. See page 182 of PBP. (Severity: 3) +Reused variable name in lexical scope: $imap2 at line 2489, column 9. Invent unique variable names. (Severity: 3) +Regular expression without "/x" flag at line 2505, column 20. See page 236 of PBP. (Severity: 3) +Mixed high and low-precedence booleans at line 2506, column 12. See page 70 of PBP. (Severity: 4) +Expression form of "eval" at line 2929, column 13. See page 161 of PBP. (Severity: 5) +Expression form of "eval" at line 3148, column 13. See page 161 of PBP. (Severity: 5) +Subroutine "select_msgs" does not end with "return" at line 3289, column 1. See page 197 of PBP. (Severity: 4) +Subroutine "tests_msgs_from_maxmin" does not end with "return" at line 3428, column 1. See page 197 of PBP. (Severity: 4) +Subroutine "copy_message" with high complexity score (30) at line 3505, column 1. Consider refactoring. (Severity: 3) +Too many arguments at line 3505, column 1. See page 182 of PBP. (Severity: 3) +Too many arguments at line 3596, column 1. See page 182 of PBP. (Severity: 3) +Subroutine "tests_subject" does not end with "return" at line 3690, column 1. See page 197 of PBP. (Severity: 4) +Too many arguments at line 3753, column 1. See page 182 of PBP. (Severity: 3) +Subroutine "sleep_if_needed" does not end with "return" at line 3809, column 1. See page 197 of PBP. (Severity: 4) +Reused variable name in lexical scope: $total_bytes_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $nb_msg_transferred at line 3810, column 2. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $nb_msg_transferred at line 3822, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $maxmessagespersecond at line 3822, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $total_bytes_transferred at line 3843, column 9. Invent unique variable names. (Severity: 3) +Reused variable name in lexical scope: $maxbytespersecond at line 3843, column 9. Invent unique variable names. (Severity: 3) +Mismatched operator at line 4311, column 75. Numeric/string operators and operands should match. (Severity: 3) +Hard tabs used at line 4395, column 10. See page 20 of PBP. (Severity: 3) +Expression form of "eval" at line 4666, column 13. See page 161 of PBP. (Severity: 5) +Too many arguments at line 4821, column 1. See page 182 of PBP. (Severity: 3) +Expression form of "eval" at line 5453, column 43. See page 161 of PBP. (Severity: 5) +Expression form of "eval" at line 5457, column 45. See page 161 of PBP. (Severity: 5) +"$i" is declared but not used at line 5721, column 9. Unused variables clutter code and make it harder to read. (Severity: 3) diff --git a/tests.sh b/tests.sh index 4b9036b..287ed72 100644 --- a/tests.sh +++ b/tests.sh @@ -1,6 +1,6 @@ #!/bin/sh -# $Id: tests.sh,v 1.233 2013/12/25 03:25:18 gilles Exp gilles $ +# $Id: tests.sh,v 1.235 2014/01/27 02:22:29 gilles Exp gilles $ # Example 1: # CMD_PERL='perl -I./W/Mail-IMAPClient-3.35/lib' sh -x tests.sh @@ -1183,6 +1183,42 @@ ll_maxlinelength() --maxlinelength 8 --nofoldersizes --folder INBOX } +ll_minmaxlinelength() +{ + can_send && sendtestmessage + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tata \ + --passfile1 ../../var/pass/secret.tata \ + --host2 $HOST2 --user2 titi \ + --passfile2 ../../var/pass/secret.titi \ + --minmaxlinelength 1000 --nofoldersizes --folder INBOX +} + + +ll_maxlinelength_prepa_1() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 gilles@est.belle \ + --passfile1 ../../var/pass/secret.gilles_mbox \ + --host2 $HOST2 --user2 tete@est.belle \ + --passfile2 ../../var/pass/secret.tete \ + --folderrec INBOX.Junk --foldersizes --justfolders \ + --usecache --tmpdir /var/tmp --minmaxlinelength 8000 --debugmaxlinelength +} + +ll_maxlinelength_prepa_2() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tete@est.belle \ + --passfile1 ../../var/pass/secret.tete \ + --host2 ks.lamiral.info --user2 tata \ + --passfile2 ../../var/pass/secret.tata \ + --ssl2 \ + --include INBOX.Junk.20 --foldersizes --nojustfolders \ + --useuid --tmpdir /var/tmp --minmaxlinelength 10 --delete2 --nofastio1 --nofastio2 +} + + ll_maxsize() { @@ -2046,6 +2082,20 @@ ll_delete_reverse() { --delete --minage 100 --maxage 300 --noexpungeaftereach } +ll_delete_reverse_useuid() { + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 titi \ + --passfile1 ../../var/pass/secret.titi \ + --host2 $HOST2 --user2 tata \ + --passfile2 ../../var/pass/secret.tata \ + --folder INBOX \ + --delete --minage 100 --maxage 300 --noexpungeaftereach \ + --useuid +} + + + + ll_maxmessagespersecond() { ll_delete_reverse $CMD_PERL ./imapsync \ @@ -2964,9 +3014,55 @@ l_office365() --passfile1 ../../var/pass/secret.tata \ --host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \ --passfile2 ../../var/pass/secret.outlook.com \ - --folder INBOX --regextrans2 's/INBOX/tata/' --debugflags + --folder INBOX --tmpdir /var/tmp --usecache --regextrans2 's/INBOX/tata/' --delete2 --expunge2 } +l_office365_bigfolders() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tata \ + --passfile1 ../../var/pass/secret.tata \ + --host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \ + --passfile2 ../../var/pass/secret.outlook.com \ + --tmpdir /var/tmp --useuid --include Junk.20 +} + + + +l_office365_maxline() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tata \ + --passfile1 ../../var/pass/secret.tata \ + --host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \ + --passfile2 ../../var/pass/secret.outlook.com \ + --tmpdir /var/tmp --usecache --include Junk.2013 --maxlinelength 16000 --debugmaxlinelength +} + +l_office365_maxline_2() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tata \ + --passfile1 ../../var/pass/secret.tata \ + --host2 imap-mail.outlook.com --ssl2 --user2 gilles.lamiral@outlook.com \ + --passfile2 ../../var/pass/secret.outlook.com \ + --tmpdir /var/tmp --usecache \ + --folder INBOX --regextrans2 's/INBOX/tata/' \ + --minmaxlinelength 8000 --debugmaxlinelength +} + +# Only available on ks2 (filtered by a firewall) +l_exchange_maxline() +{ + $CMD_PERL ./imapsync \ + --host1 $HOST1 --user1 tata \ + --passfile1 ../../var/pass/secret.tata \ + --host2 correu.quopiam.com --ssl2 --user2 utest@quopiam.com \ + --passfile2 ../../var/pass/secret.quopiam.com \ + --tmpdir /var/tmp --usecache \ + --folder INBOX --regextrans2 's/INBOX/longlines/' \ + --minmaxlinelength 10000 --maxlinelength 11000 --debugmaxlinelength +} ########################## # specific tests @@ -3431,8 +3527,8 @@ big_folder() --passfile1 ../../var/pass/secret.gilles_mbox \ --host2 $HOST2 --user2 tete@est.belle \ --passfile2 ../../var/pass/secret.tete \ - --folder INBOX.Junk.2010 \ - --useheader Message-ID || \ + --include INBOX.Junk.20 \ + --usecache --tmpdir /var/tmp || \ true } date2=`date` @@ -3447,8 +3543,8 @@ big_folder_useuid() --passfile1 ../../var/pass/secret.gilles_mbox \ --host2 $HOST2 --user2 tete@est.belle \ --passfile2 ../../var/pass/secret.tete \ - --folder INBOX.Junk.2011 --nofoldersizes \ - --useuid --tmpdir /var/tmp || \ + --include INBOX.Junk.20 --foldersizes \ + --useuid --tmpdir /var/tmp --delete2 || \ true } date2=`date`

Alternatives to imapsync are listed in the Similar softwares section.