[PATCH] testbot: Standardize the packages inheritance and exports.

Francois Gouget fgouget at codeweavers.com
Wed Apr 18 20:34:42 CDT 2018


Use "our" instead of the antiquated 'use vars'.
Use "use Exporter 'import'" as this form avoid exporting the whole
Exporter interface from each of our package. This means we can also drop
@ISA in those cases where we don't need to inherit from another package.
Also we don't need the Exporter module just to inherit an interface so
remove unneeded uses of Exporter.
Defining the package inheritance and public interface does not depend on
the rest of the package so move these statements first, even before all
the other imports.
Remove the ampersands from the exported functions names: they are
unnecessary (and reportedly slower).

Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
---

Last time it did not apply cleanly which is a bit strange. This time I 
made sure it was the first patch in the stack so it should really apply 
fine (if not I guess it means it's getting munged by my email client).

 testbot/lib/ObjectModel/BackEnd.pm            |  7 ++-----
 .../ObjectModel/BasicPropertyDescriptor.pm    |  8 +++----
 .../lib/ObjectModel/CGI/CollectionBlock.pm    |  9 +++-----
 .../ObjectModel/CGI/CollectionBlockForPage.pm |  5 +----
 testbot/lib/ObjectModel/CGI/CollectionPage.pm |  7 ++-----
 testbot/lib/ObjectModel/CGI/FormPage.pm       |  5 +----
 testbot/lib/ObjectModel/CGI/FreeFormPage.pm   |  6 +-----
 testbot/lib/ObjectModel/CGI/ItemPage.pm       |  7 ++-----
 testbot/lib/ObjectModel/CGI/Page.pm           |  8 +++----
 testbot/lib/ObjectModel/Collection.pm         |  7 ++-----
 testbot/lib/ObjectModel/DBIBackEnd.pm         | 12 +++++------
 .../DetailrefPropertyDescriptor.pm            |  8 +++----
 .../lib/ObjectModel/EnumPropertyDescriptor.pm |  8 +++----
 testbot/lib/ObjectModel/Item.pm               |  8 +++----
 .../ObjectModel/ItemrefPropertyDescriptor.pm  |  9 ++++----
 testbot/lib/ObjectModel/PropertyDescriptor.pm |  4 ----
 testbot/lib/WineTestBot/Activity.pm           |  9 +++-----
 testbot/lib/WineTestBot/Branches.pm           | 16 +++++++-------
 testbot/lib/WineTestBot/CGI/PageBase.pm       |  9 +++-----
 testbot/lib/WineTestBot/CGI/Sessions.pm       | 18 +++++++---------
 testbot/lib/WineTestBot/Engine/Events.pm      |  6 ++----
 testbot/lib/WineTestBot/Engine/Notify.pm      | 16 +++++++-------
 testbot/lib/WineTestBot/Jobs.pm               | 20 +++++++-----------
 testbot/lib/WineTestBot/LibvirtDomain.pm      |  8 +++----
 testbot/lib/WineTestBot/Log.pm                |  9 +++-----
 testbot/lib/WineTestBot/Patches.pm            | 21 ++++++++-----------
 testbot/lib/WineTestBot/PendingPatchSets.pm   | 20 +++++++-----------
 testbot/lib/WineTestBot/PendingPatches.pm     | 17 ++++++---------
 testbot/lib/WineTestBot/RecordGroups.pm       | 18 ++++++----------
 testbot/lib/WineTestBot/Records.pm            | 18 +++++++---------
 testbot/lib/WineTestBot/Roles.pm              | 16 +++++---------
 testbot/lib/WineTestBot/Steps.pm              | 20 +++++++-----------
 testbot/lib/WineTestBot/StepsTasks.pm         | 19 +++++++----------
 testbot/lib/WineTestBot/Tasks.pm              | 21 +++++++------------
 testbot/lib/WineTestBot/TestAgent.pm          | 17 +++++++--------
 testbot/lib/WineTestBot/UserRoles.pm          | 17 ++++++---------
 testbot/lib/WineTestBot/Users.pm              | 21 ++++++++-----------
 testbot/lib/WineTestBot/Utils.pm              | 12 +++++------
 testbot/lib/WineTestBot/VMs.pm                | 20 +++++++-----------
 testbot/lib/WineTestBot/WineTestBotObjects.pm | 18 +++++++---------
 testbot/web/index.pl                          | 17 ++++++++-------
 41 files changed, 199 insertions(+), 322 deletions(-)

diff --git a/testbot/lib/ObjectModel/BackEnd.pm b/testbot/lib/ObjectModel/BackEnd.pm
index 0bb48cf7c..ae209a4c1 100644
--- a/testbot/lib/ObjectModel/BackEnd.pm
+++ b/testbot/lib/ObjectModel/BackEnd.pm
@@ -30,11 +30,8 @@ should provide.
 
 =cut
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&AddDBBackEnd &GetDBBackEnd &RemoveDBBackEnd &CloseAllDBBackEnds);
+use Exporter 'import';
+our @EXPORT = qw(AddDBBackEnd GetDBBackEnd RemoveDBBackEnd CloseAllDBBackEnds);
 
 sub new($@)
 {
diff --git a/testbot/lib/ObjectModel/BasicPropertyDescriptor.pm b/testbot/lib/ObjectModel/BasicPropertyDescriptor.pm
index 4c3382cb0..766a34230 100644
--- a/testbot/lib/ObjectModel/BasicPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/BasicPropertyDescriptor.pm
@@ -30,13 +30,11 @@ This handles the boolean, a number and string columns.
 
 =cut
 
+use Exporter 'import';
 use ObjectModel::PropertyDescriptor;
+our @ISA = qw(ObjectModel::PropertyDescriptor);
+our @EXPORT = qw(CreateBasicPropertyDescriptor);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::PropertyDescriptor Exporter);
- at EXPORT = qw(&CreateBasicPropertyDescriptor);
 
 sub _initialize($$$)
 {
diff --git a/testbot/lib/ObjectModel/CGI/CollectionBlock.pm b/testbot/lib/ObjectModel/CGI/CollectionBlock.pm
index ca2c6d3e1..155717aee 100644
--- a/testbot/lib/ObjectModel/CGI/CollectionBlock.pm
+++ b/testbot/lib/ObjectModel/CGI/CollectionBlock.pm
@@ -27,15 +27,12 @@ ObjectModel::CGI::CollectionBlock - Base class for list blocks
 
 package ObjectModel::CGI::CollectionBlock;
 
+use Exporter 'import';
+our @EXPORT = qw(new);
+
 use POSIX qw(strftime);
 use URI::Escape;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
-
- at EXPORT = qw(new);
 
 sub new($$$@)
 {
diff --git a/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm b/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm
index 3dd8154a7..ff8247ec9 100644
--- a/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm
+++ b/testbot/lib/ObjectModel/CGI/CollectionBlockForPage.pm
@@ -28,11 +28,8 @@ ObjectModel::CGI::CollectionBlockForPage - Collection block for list pages
 =cut
 
 use ObjectModel::CGI::CollectionBlock;
+our @ISA = qw(ObjectModel::CGI::CollectionBlock);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::CGI::CollectionBlock Exporter);
 
 sub CallGenerateFormStart($)
 {
diff --git a/testbot/lib/ObjectModel/CGI/CollectionPage.pm b/testbot/lib/ObjectModel/CGI/CollectionPage.pm
index e45b2a4a7..6593afcd2 100644
--- a/testbot/lib/ObjectModel/CGI/CollectionPage.pm
+++ b/testbot/lib/ObjectModel/CGI/CollectionPage.pm
@@ -27,13 +27,10 @@ ObjectModel::CGI::CollectionPage - Base class for list pages
 
 =cut
 
-use ObjectModel::CGI::CollectionBlockForPage;
 use ObjectModel::CGI::Page;
+our @ISA = qw(ObjectModel::CGI::Page);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::CGI::Page Exporter);
+use ObjectModel::CGI::CollectionBlockForPage;
 
 
 sub _initialize($$$$)
diff --git a/testbot/lib/ObjectModel/CGI/FormPage.pm b/testbot/lib/ObjectModel/CGI/FormPage.pm
index 1745ec87b..b3861dd2a 100644
--- a/testbot/lib/ObjectModel/CGI/FormPage.pm
+++ b/testbot/lib/ObjectModel/CGI/FormPage.pm
@@ -29,11 +29,8 @@ ObjectModel::CGI::FormPage - Base class for web forms
 =cut
 
 use ObjectModel::CGI::Page;
+our @ISA = qw(ObjectModel::CGI::Page);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::CGI::Page Exporter);
 
 sub _initialize($$$$)
 {
diff --git a/testbot/lib/ObjectModel/CGI/FreeFormPage.pm b/testbot/lib/ObjectModel/CGI/FreeFormPage.pm
index 7af04c498..c4f00101b 100644
--- a/testbot/lib/ObjectModel/CGI/FreeFormPage.pm
+++ b/testbot/lib/ObjectModel/CGI/FreeFormPage.pm
@@ -28,10 +28,6 @@ ObjectModel::CGI::FreeFormPage - Base class for unbound web forms
 =cut
 
 use ObjectModel::CGI::FormPage;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::CGI::FormPage Exporter);
+our @ISA = qw(ObjectModel::CGI::FormPage);
 
 1;
diff --git a/testbot/lib/ObjectModel/CGI/ItemPage.pm b/testbot/lib/ObjectModel/CGI/ItemPage.pm
index b44e5b2d3..c208aea31 100644
--- a/testbot/lib/ObjectModel/CGI/ItemPage.pm
+++ b/testbot/lib/ObjectModel/CGI/ItemPage.pm
@@ -28,13 +28,10 @@ ObjectModel::CGI::ItemPage - Base class for bound web forms
 
 =cut
 
-use URI::Escape;
 use ObjectModel::CGI::FormPage;
+our @ISA = qw(ObjectModel::CGI::FormPage);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::CGI::FormPage Exporter);
+use URI::Escape;
 
 sub _initialize($$$$)
 {
diff --git a/testbot/lib/ObjectModel/CGI/Page.pm b/testbot/lib/ObjectModel/CGI/Page.pm
index ff7e8487a..b91022832 100644
--- a/testbot/lib/ObjectModel/CGI/Page.pm
+++ b/testbot/lib/ObjectModel/CGI/Page.pm
@@ -27,13 +27,13 @@ ObjectModel::CGI::Page - Base class for web pages
 
 =cut
 
+use Exporter 'import';
+our @EXPORT = qw(new SetPageBaseCreator);
+
 use CGI;
 
-use vars qw(@ISA @EXPORT $PageBaseCreator);
 
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(new SetPageBaseCreator);
+my $PageBaseCreator;
 
 sub new($$$@)
 {
diff --git a/testbot/lib/ObjectModel/Collection.pm b/testbot/lib/ObjectModel/Collection.pm
index 032c7386d..712172bca 100644
--- a/testbot/lib/ObjectModel/Collection.pm
+++ b/testbot/lib/ObjectModel/Collection.pm
@@ -37,11 +37,8 @@ criteria.
 
 =cut
 
-use vars qw(@ISA @EXPORT_OK);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT_OK = qw(&new &ComputeMasterKey);
+use Exporter 'import';
+our @EXPORT_OK = qw(new ComputeMasterKey);
 
 use Scalar::Util qw(weaken);
 use ObjectModel::BackEnd;
diff --git a/testbot/lib/ObjectModel/DBIBackEnd.pm b/testbot/lib/ObjectModel/DBIBackEnd.pm
index 0016e19c6..40bfe85f7 100644
--- a/testbot/lib/ObjectModel/DBIBackEnd.pm
+++ b/testbot/lib/ObjectModel/DBIBackEnd.pm
@@ -30,16 +30,14 @@ ObjectModel::BackEnd
 
 =cut
 
-use DBI;
-use Time::Local;
-
+use Exporter 'import';
 use ObjectModel::BackEnd;
+our @ISA = qw(ObjectModel::BackEnd);
+our @EXPORT = qw(UseDBIBackEnd);
 
-use vars qw(@ISA @EXPORT);
+use DBI;
+use Time::Local;
 
-require Exporter;
- at ISA = qw(ObjectModel::BackEnd Exporter);
- at EXPORT = qw(&UseDBIBackEnd);
 
 sub GetDb($)
 {
diff --git a/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm b/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
index d60fe6395..25144d08c 100644
--- a/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/DetailrefPropertyDescriptor.pm
@@ -25,11 +25,11 @@ ObjectModel::DetailrefPropertyDescriptor - A reference to a collection of relate
 
 =cut
 
-use vars qw(@ISA @EXPORT);
+use Exporter 'import';
+use ObjectModel::PropertyDescriptor;
+our @ISA = qw(ObjectModel::PropertyDescriptor);
+our @EXPORT = qw(CreateDetailrefPropertyDescriptor SetDetailrefKeyPrefix);
 
-require Exporter;
- at ISA = qw(ObjectModel::PropertyDescriptor Exporter);
- at EXPORT = qw(&CreateDetailrefPropertyDescriptor &SetDetailrefKeyPrefix);
 
 sub _initialize($$)
 {
diff --git a/testbot/lib/ObjectModel/EnumPropertyDescriptor.pm b/testbot/lib/ObjectModel/EnumPropertyDescriptor.pm
index 3e116ba72..d5850698e 100644
--- a/testbot/lib/ObjectModel/EnumPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/EnumPropertyDescriptor.pm
@@ -30,13 +30,11 @@ new value is allowed.
 
 =cut
 
+use Exporter 'import';
 use ObjectModel::PropertyDescriptor;
+our @ISA = qw(ObjectModel::PropertyDescriptor);
+our @EXPORT = qw(CreateEnumPropertyDescriptor);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::PropertyDescriptor Exporter);
- at EXPORT = qw(&CreateEnumPropertyDescriptor);
 
 sub _initialize($$)
 {
diff --git a/testbot/lib/ObjectModel/Item.pm b/testbot/lib/ObjectModel/Item.pm
index 201577c98..fb125f015 100644
--- a/testbot/lib/ObjectModel/Item.pm
+++ b/testbot/lib/ObjectModel/Item.pm
@@ -26,15 +26,13 @@ ObjectModel::Item - Base class for items
 
 =cut
 
+use Exporter 'import';
+our @EXPORT_OK = qw(new);
+
 use Scalar::Util qw(weaken);
 use ObjectModel::BackEnd;
 use ObjectModel::Collection;
 
-use vars qw(@ISA @EXPORT_OK);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT_OK = qw(&new);
 
 
 =pod
diff --git a/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm b/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
index 21806a269..cba4f9af1 100644
--- a/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/ItemrefPropertyDescriptor.pm
@@ -25,11 +25,10 @@ ObjectModel::ItemrefPropertyDescriptor - A property referencing an ObjectModel::
 
 =cut
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::PropertyDescriptor Exporter);
- at EXPORT = qw(&CreateItemrefPropertyDescriptor);
+use Exporter 'import';
+use ObjectModel::PropertyDescriptor;
+our @ISA = qw(ObjectModel::PropertyDescriptor);
+our @EXPORT = qw(CreateItemrefPropertyDescriptor);
 
 sub _initialize($$$)
 {
diff --git a/testbot/lib/ObjectModel/PropertyDescriptor.pm b/testbot/lib/ObjectModel/PropertyDescriptor.pm
index 583082e81..f13a4b248 100644
--- a/testbot/lib/ObjectModel/PropertyDescriptor.pm
+++ b/testbot/lib/ObjectModel/PropertyDescriptor.pm
@@ -32,10 +32,6 @@ required or not.
 
 =cut
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
 
 sub new($$$$$@)
 {
diff --git a/testbot/lib/WineTestBot/Activity.pm b/testbot/lib/WineTestBot/Activity.pm
index acec6064c..b3e576a19 100644
--- a/testbot/lib/WineTestBot/Activity.pm
+++ b/testbot/lib/WineTestBot/Activity.pm
@@ -25,18 +25,15 @@ WineTestBot::Activity -  reconstruct the TestBot's activity from its history rec
 
 =cut
 
+use Exporter 'import';
+our @EXPORT = qw(GetActivity GetStatistics);
+
 use Scalar::Util qw(weaken);
 use WineTestBot::Config;
 use WineTestBot::Jobs;
 use WineTestBot::RecordGroups;
 use WineTestBot::Records;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&GetActivity &GetStatistics);
-
 
 sub _UpdateMin($$)
 {
diff --git a/testbot/lib/WineTestBot/Branches.pm b/testbot/lib/WineTestBot/Branches.pm
index a67832590..a18fafcbd 100644
--- a/testbot/lib/WineTestBot/Branches.pm
+++ b/testbot/lib/WineTestBot/Branches.pm
@@ -27,12 +27,10 @@ WineTestBot::Branch - Describes a Wine branch
 =cut
 
 use WineTestBot::WineTestBotObjects;
-use WineTestBot::Config;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw (@ISA @EXPORT);
+use WineTestBot::Config;
 
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -42,6 +40,7 @@ sub InitializeNew($$)
   $self->SUPER::InitializeNew($Collection);
 }
 
+
 package WineTestBot::Branches;
 
 =head1 NAME
@@ -50,14 +49,13 @@ WineTestBot::Branches - A collection of WineTestBot::Branch objects
 
 =cut
 
-use ObjectModel::BasicPropertyDescriptor;
+use Exporter 'import';
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateBranches);
 
-use vars qw (@ISA @EXPORT);
+use ObjectModel::BasicPropertyDescriptor;
 
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateBranches);
 
 sub GetDefaultBranch($)
 {
diff --git a/testbot/lib/WineTestBot/CGI/PageBase.pm b/testbot/lib/WineTestBot/CGI/PageBase.pm
index fa383c512..67e8fc86f 100644
--- a/testbot/lib/WineTestBot/CGI/PageBase.pm
+++ b/testbot/lib/WineTestBot/CGI/PageBase.pm
@@ -28,6 +28,9 @@ WineTestBot::CGI::PageBase - Base class for web pages
 
 =cut
 
+use Exporter 'import';
+our @EXPORT = qw(CreatePageBase);
+
 use Apache2::Const -compile => qw(REDIRECT);
 use Apache2::ServerRec;
 use CGI::Cookie;
@@ -36,12 +39,6 @@ use WineTestBot::CGI::Sessions;
 use WineTestBot::Config;
 use WineTestBot::Utils;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&CreatePageBase);
-
 sub new($$$$@)
 {
   my $class = shift;
diff --git a/testbot/lib/WineTestBot/CGI/Sessions.pm b/testbot/lib/WineTestBot/CGI/Sessions.pm
index 87fd15fb2..af30fbb85 100644
--- a/testbot/lib/WineTestBot/CGI/Sessions.pm
+++ b/testbot/lib/WineTestBot/CGI/Sessions.pm
@@ -28,12 +28,10 @@ WineTestBot::CGI::Session - A web user's session
 
 =cut
 
-use WineTestBot::Utils;
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-require Exporter;
-use vars qw(@ISA @EXPORT);
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
+use WineTestBot::Utils;
 
 sub InitializeNew($$)
 {
@@ -53,19 +51,17 @@ WineTestBot::CGI::Sessions - A Session collection
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateSessions DeleteSessions NewSession);
+
 use CGI::Cookie;
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
 use WineTestBot::Config;
 use WineTestBot::Users;
 use WineTestBot::Utils;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateSessions &DeleteSessions &NewSession);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/Engine/Events.pm b/testbot/lib/WineTestBot/Engine/Events.pm
index c3ebe9baf..677debfbf 100644
--- a/testbot/lib/WineTestBot/Engine/Events.pm
+++ b/testbot/lib/WineTestBot/Engine/Events.pm
@@ -27,11 +27,9 @@ WineTestBot::Engine::Events - Engine events
 
 =cut
 
-use vars qw (@ISA @EXPORT);
+use Exporter 'import';
+our @EXPORT = qw(AddEvent DeleteEvent EventScheduled RunEvents);
 
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&AddEvent &DeleteEvent &EventScheduled &RunEvents);
 
 my %Events;
 
diff --git a/testbot/lib/WineTestBot/Engine/Notify.pm b/testbot/lib/WineTestBot/Engine/Notify.pm
index c277f7aa9..ddb14d2fa 100644
--- a/testbot/lib/WineTestBot/Engine/Notify.pm
+++ b/testbot/lib/WineTestBot/Engine/Notify.pm
@@ -27,18 +27,16 @@ WineTestBot::Engine::Notify - Engine notification
 
 =cut
 
+use Exporter 'import';
+our $RunningInEngine;
+our @EXPORT = qw(Shutdown PingEngine JobStatusChange JobCancel
+                 JobRestart RescheduleJobs VMStatusChange
+                 WinePatchMLSubmission WinePatchWebSubmission GetScreenshot);
+our @EXPORT_OK = qw($RunningInEngine);
+
 use Socket;
 use WineTestBot::Config;
 
-use vars qw (@ISA @EXPORT @EXPORT_OK $RunningInEngine);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&Shutdown &PingEngine &JobStatusChange &JobCancel
-             &JobRestart &RescheduleJobs &VMStatusChange
-             &WinePatchMLSubmission &WinePatchWebSubmission &GetScreenshot);
- at EXPORT_OK = qw($RunningInEngine);
-
 
 sub SendCmdReceiveReply($)
 {
diff --git a/testbot/lib/WineTestBot/Jobs.pm b/testbot/lib/WineTestBot/Jobs.pm
index f810b4f12..29f7860cb 100644
--- a/testbot/lib/WineTestBot/Jobs.pm
+++ b/testbot/lib/WineTestBot/Jobs.pm
@@ -51,17 +51,15 @@ A Job is composed of multiple WineTestBot::Step objects.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use File::Path;
 
 use WineTestBot::Config;
 use WineTestBot::Branches;
 use WineTestBot::Engine::Notify;
-use WineTestBot::WineTestBotObjects;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub _initialize($$)
 {
@@ -391,11 +389,15 @@ those that are yet to be run.
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateJobs ScheduleJobs CheckJobs);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::EnumPropertyDescriptor;
 use ObjectModel::DetailrefPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
-use WineTestBot::WineTestBotObjects;
 use WineTestBot::Branches;
 use WineTestBot::Config;
 use WineTestBot::Patches;
@@ -404,12 +406,6 @@ use WineTestBot::Steps;
 use WineTestBot::Users;
 use WineTestBot::VMs;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateJobs &ScheduleJobs &CheckJobs);
-
 
 sub CreateItem($)
 {
diff --git a/testbot/lib/WineTestBot/LibvirtDomain.pm b/testbot/lib/WineTestBot/LibvirtDomain.pm
index 9ca98eb91..bab5d7e36 100644
--- a/testbot/lib/WineTestBot/LibvirtDomain.pm
+++ b/testbot/lib/WineTestBot/LibvirtDomain.pm
@@ -32,14 +32,12 @@ technologies.
 
 =cut
 
+use Exporter 'import';
+our @EXPORT_OK = qw(new);
+
 use Sys::Virt;
 use Image::Magick;
 
-use vars qw (@ISA @EXPORT_OK);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT_OK = qw(new);
 
 my %_Hypervisors;
 my %_Domains;
diff --git a/testbot/lib/WineTestBot/Log.pm b/testbot/lib/WineTestBot/Log.pm
index 65782c514..36efb48a2 100644
--- a/testbot/lib/WineTestBot/Log.pm
+++ b/testbot/lib/WineTestBot/Log.pm
@@ -25,14 +25,11 @@ WineTestBot::Log - Logging
 
 =cut
 
-use WineTestBot::Config;
-use WineTestBot::Utils;
+use Exporter 'import';
+our @EXPORT = qw(LogMsg OpenLog Time Elapsed PrettyElapsed);
 
-use vars qw (@ISA @EXPORT);
+use WineTestBot::Config;
 
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&LogMsg &OpenLog &Time &Elapsed &PrettyElapsed);
 
 my $logfile;
 my $logprefix;
diff --git a/testbot/lib/WineTestBot/Patches.pm b/testbot/lib/WineTestBot/Patches.pm
index 7906f1cb6..e4b9b0089 100644
--- a/testbot/lib/WineTestBot/Patches.pm
+++ b/testbot/lib/WineTestBot/Patches.pm
@@ -33,6 +33,9 @@ linked to this patch through a WineTestBot::PendingPatch object.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use Encode qw/decode/;
 use File::Basename;
 
@@ -42,13 +45,8 @@ use WineTestBot::Jobs;
 use WineTestBot::Users;
 use WineTestBot::Utils;
 use WineTestBot::VMs;
-use WineTestBot::WineTestBotObjects;
 use WineTestBot::Engine::Notify;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -357,6 +355,7 @@ sub GetEMailRecipient($)
   return BuildEMailRecipient($self->FromEMail, $self->FromName);
 }
 
+
 package WineTestBot::Patches;
 
 =head1 NAME
@@ -365,15 +364,13 @@ WineTestBot::Patches - A collection of WineTestBot::Patch objects
 
 =cut
 
-use ObjectModel::BasicPropertyDescriptor;
-use WineTestBot::Config;
+use Exporter 'import';
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreatePatches);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreatePatches);
+use ObjectModel::BasicPropertyDescriptor;
+use WineTestBot::Config;
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/PendingPatchSets.pm b/testbot/lib/WineTestBot/PendingPatchSets.pm
index d51652221..88dc73677 100644
--- a/testbot/lib/WineTestBot/PendingPatchSets.pm
+++ b/testbot/lib/WineTestBot/PendingPatchSets.pm
@@ -38,15 +38,13 @@ The WineTestBot::PendingPatchSet class is where this tracking is implemented.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use WineTestBot::Config;
 use WineTestBot::Patches;
 use WineTestBot::Utils;
-use WineTestBot::WineTestBotObjects;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 =pod
 =over 12
@@ -153,19 +151,17 @@ WineTestBot::PendingPatchSets - A collection of WineTestBot::PendingPatchSet obj
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreatePendingPatchSets);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::DetailrefPropertyDescriptor;
 use WineTestBot::Config;
 use WineTestBot::PendingPatches;
 use WineTestBot::Patches;
 use WineTestBot::Utils;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreatePendingPatchSets);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/PendingPatches.pm b/testbot/lib/WineTestBot/PendingPatches.pm
index 281db60ef..4de599dac 100644
--- a/testbot/lib/WineTestBot/PendingPatches.pm
+++ b/testbot/lib/WineTestBot/PendingPatches.pm
@@ -32,11 +32,8 @@ identifying the patch series it belongs to.
 =cut
 
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 package WineTestBot::PendingPatches;
 
@@ -46,16 +43,14 @@ WineTestBot::PendingPatches - A collection of WineTestBot::PendingPatch objects
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreatePendingPatches);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
 use WineTestBot::Patches;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreatePendingPatches);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/RecordGroups.pm b/testbot/lib/WineTestBot/RecordGroups.pm
index 1e5dbbdd4..9f0f52036 100644
--- a/testbot/lib/WineTestBot/RecordGroups.pm
+++ b/testbot/lib/WineTestBot/RecordGroups.pm
@@ -31,12 +31,8 @@ or the state of the TestBot at at a given time.
 =cut
 
 use WineTestBot::WineTestBotObjects;
-use WineTestBot::Config;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -56,17 +52,15 @@ WineTestBot::RecordGroups - A collection of WineTestBot::RecordGroup objects
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateRecordGroups CompareRecordGroups SaveRecord);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::DetailrefPropertyDescriptor;
-use WineTestBot::WineTestBotObjects;
 use WineTestBot::Records;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateRecordGroups &CompareRecordGroups &SaveRecord);
-
 
 sub CreateItem($)
 {
diff --git a/testbot/lib/WineTestBot/Records.pm b/testbot/lib/WineTestBot/Records.pm
index 98d5ee7d9..990ae421e 100644
--- a/testbot/lib/WineTestBot/Records.pm
+++ b/testbot/lib/WineTestBot/Records.pm
@@ -38,13 +38,11 @@ only limited by the amount of data dumped into the Records table.
 
 =cut
 
-use WineTestBot::Config;
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw (@ISA @EXPORT);
+use WineTestBot::Config;
 
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -62,15 +60,13 @@ WineTestBot::Records - A collection of WineTestBot::Record objects
 
 =cut
 
-use ObjectModel::BasicPropertyDescriptor;
-use ObjectModel::EnumPropertyDescriptor;
+use Exporter 'import';
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateRecords);
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateRecords);
+use ObjectModel::BasicPropertyDescriptor;
+use ObjectModel::EnumPropertyDescriptor;
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/Roles.pm b/testbot/lib/WineTestBot/Roles.pm
index a617ac14e..45f370f1d 100644
--- a/testbot/lib/WineTestBot/Roles.pm
+++ b/testbot/lib/WineTestBot/Roles.pm
@@ -30,11 +30,7 @@ A Role is a class of users and defines what they can do.
 =cut
 
 use WineTestBot::WineTestBotObjects;
-
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
 
 package WineTestBot::Roles;
@@ -45,14 +41,12 @@ WineTestBot::Roles - A collection of WineTestBot::Role objects
 
 =cut
 
-use ObjectModel::BasicPropertyDescriptor;
+use Exporter 'import';
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateRoles);
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateRoles);
+use ObjectModel::BasicPropertyDescriptor;
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/Steps.pm b/testbot/lib/WineTestBot/Steps.pm
index ef2b3872b..237347347 100644
--- a/testbot/lib/WineTestBot/Steps.pm
+++ b/testbot/lib/WineTestBot/Steps.pm
@@ -36,16 +36,14 @@ or to reset their PreviousNo fields beforehand.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use File::Copy;
 use File::Path;
 
 use WineTestBot::Config;
-use WineTestBot::WineTestBotObjects;
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -184,17 +182,15 @@ WineTestBot::Steps - A collection of Job Steps
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateSteps);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::EnumPropertyDescriptor;
 use ObjectModel::DetailrefPropertyDescriptor;
 use WineTestBot::Tasks;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateSteps);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/StepsTasks.pm b/testbot/lib/WineTestBot/StepsTasks.pm
index 3610492ba..9dec8060a 100644
--- a/testbot/lib/WineTestBot/StepsTasks.pm
+++ b/testbot/lib/WineTestBot/StepsTasks.pm
@@ -26,13 +26,11 @@ WineTestBot::StepTask - Merged Step + Task object
 
 =cut
 
-use WineTestBot::Config;
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw(@ISA @EXPORT);
+use WineTestBot::Config;
 
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub GetStepDir($)
 {
@@ -82,6 +80,7 @@ sub GetTitle($)
   return $Title;
 }
 
+
 package WineTestBot::StepsTasks;
 
 =head1 NAME
@@ -97,18 +96,16 @@ a specific database table.
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateStepsTasks);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
 use WineTestBot::Steps;
 use WineTestBot::Tasks;
 use WineTestBot::VMs;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateStepsTasks);
 
 sub _initialize($$)
 {
diff --git a/testbot/lib/WineTestBot/Tasks.pm b/testbot/lib/WineTestBot/Tasks.pm
index f16dfe201..4473df217 100644
--- a/testbot/lib/WineTestBot/Tasks.pm
+++ b/testbot/lib/WineTestBot/Tasks.pm
@@ -33,18 +33,15 @@ virtual machine that the test must be performed in.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use POSIX qw(:errno_h);
 use File::Path;
 use ObjectModel::BackEnd;
 use WineTestBot::Config;
 use WineTestBot::Jobs;
 use WineTestBot::Steps;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -203,17 +200,15 @@ WineTestBot::Tasks - A collection of WineTestBot::Task objects
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateTasks);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::EnumPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
 use WineTestBot::VMs;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateTasks);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/TestAgent.pm b/testbot/lib/WineTestBot/TestAgent.pm
index 2f7ec4def..8957b9f82 100644
--- a/testbot/lib/WineTestBot/TestAgent.pm
+++ b/testbot/lib/WineTestBot/TestAgent.pm
@@ -22,11 +22,8 @@
 package TestAgent;
 use strict;
 
-use vars qw (@ISA @EXPORT_OK $SENDFILE_EXE $RUN_DNT $RUN_DNTRUNC_OUT $RUN_DNTRUNC_ERR $RUN_DNTRUNC);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT_OK = qw(new);
+use Exporter 'import';
+our @EXPORT_OK = qw(new);
 
 my $BLOCK_SIZE = 65536;
 
@@ -1097,7 +1094,7 @@ sub GetVersion($)
   return $self->{agentversion};
 }
 
-$SENDFILE_EXE = 1;
+our $SENDFILE_EXE = 1;
 
 sub _SendStringOrFile($$$$$$)
 {
@@ -1173,10 +1170,10 @@ sub GetFileToString($$)
   return $self->_GetStringOrFile($ServerPathName, undef, undef);
 }
 
-$RUN_DNT = 1;
-$RUN_DNTRUNC_OUT = 2;
-$RUN_DNTRUNC_ERR = 4;
-$RUN_DNTRUNC = $RUN_DNTRUNC_OUT | $RUN_DNTRUNC_ERR;
+our $RUN_DNT = 1;
+our $RUN_DNTRUNC_OUT = 2;
+our $RUN_DNTRUNC_ERR = 4;
+our $RUN_DNTRUNC = $RUN_DNTRUNC_OUT | $RUN_DNTRUNC_ERR;
 
 sub Run($$$;$$$)
 {
diff --git a/testbot/lib/WineTestBot/UserRoles.pm b/testbot/lib/WineTestBot/UserRoles.pm
index 972bdc0e9..585537ae8 100644
--- a/testbot/lib/WineTestBot/UserRoles.pm
+++ b/testbot/lib/WineTestBot/UserRoles.pm
@@ -26,11 +26,8 @@ WineTestBot::UserRole - A UserRole item
 =cut
 
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
 
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 package WineTestBot::UserRoles;
 
@@ -40,16 +37,14 @@ WineTestBot::UserRoles - A collection of WineTestBot::UserRole objects
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateUserRoles);
+
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::ItemrefPropertyDescriptor;
 use WineTestBot::Roles;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw(@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateUserRoles);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/Users.pm b/testbot/lib/WineTestBot/Users.pm
index 178b377b9..4752006ab 100644
--- a/testbot/lib/WineTestBot/Users.pm
+++ b/testbot/lib/WineTestBot/Users.pm
@@ -26,18 +26,16 @@ WineTestBot::User - A User
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use Digest::SHA qw(sha1_hex);
 use URI::Escape;
 use WineTestBot::Config;
 use WineTestBot::Roles;
 use WineTestBot::UserRoles;
 use WineTestBot::Utils;
-use WineTestBot::WineTestBotObjects;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub InitializeNew($$)
 {
@@ -287,6 +285,7 @@ sub HasRole($$)
   return defined($self->Roles->GetItem($RoleName));
 }
 
+
 package WineTestBot::Users;
 
 =head1 NAME
@@ -295,19 +294,17 @@ WineTestBot::Users - A collection of WineTestBot::User objects
 
 =cut
 
+use Exporter 'import';
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateUsers GetBatchUser Authenticate);
+
 use Net::LDAP;
 use ObjectModel::BasicPropertyDescriptor;
 use ObjectModel::EnumPropertyDescriptor;
 use ObjectModel::DetailrefPropertyDescriptor;
 use WineTestBot::Config;
 use WineTestBot::UserRoles;
-use WineTestBot::WineTestBotObjects;
-
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateUsers &GetBatchUser &Authenticate);
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/Utils.pm b/testbot/lib/WineTestBot/Utils.pm
index 63b906242..81a2eda39 100644
--- a/testbot/lib/WineTestBot/Utils.pm
+++ b/testbot/lib/WineTestBot/Utils.pm
@@ -25,17 +25,15 @@ WineTestBot::Utils - Utility functions
 
 =cut
 
+use Exporter 'import';
+our @EXPORT = qw(MakeSecureURL SecureConnection GenerateRandomString
+                 OpenNewFile CreateNewFile CreateNewLink CreateNewDir
+                 DurationToString BuildEMailRecipient);
+
 use Fcntl;
 
 use WineTestBot::Config;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(Exporter);
- at EXPORT = qw(&MakeSecureURL &SecureConnection &GenerateRandomString
-             &OpenNewFile &CreateNewFile &CreateNewLink &CreateNewDir
-             &DurationToString &BuildEMailRecipient);
 
 sub MakeSecureURL($)
 {
diff --git a/testbot/lib/WineTestBot/VMs.pm b/testbot/lib/WineTestBot/VMs.pm
index e74640bf2..b6305e83e 100644
--- a/testbot/lib/WineTestBot/VMs.pm
+++ b/testbot/lib/WineTestBot/VMs.pm
@@ -142,6 +142,9 @@ are undergoing maintenance.
 
 =cut
 
+use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotItem);
+
 use File::Basename;
 
 use ObjectModel::BackEnd;
@@ -150,12 +153,7 @@ use WineTestBot::Engine::Notify;
 use WineTestBot::LibvirtDomain;
 use WineTestBot::RecordGroups;
 use WineTestBot::TestAgent;
-use WineTestBot::WineTestBotObjects;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotItem Exporter);
 
 sub _initialize($$)
 {
@@ -637,15 +635,13 @@ role or status.
 
 =cut
 
-use ObjectModel::BasicPropertyDescriptor;
-use ObjectModel::EnumPropertyDescriptor;
+use Exporter 'import';
 use WineTestBot::WineTestBotObjects;
+our @ISA = qw(WineTestBot::WineTestBotCollection);
+our @EXPORT = qw(CreateVMs);
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(WineTestBot::WineTestBotCollection Exporter);
- at EXPORT = qw(&CreateVMs);
+use ObjectModel::BasicPropertyDescriptor;
+use ObjectModel::EnumPropertyDescriptor;
 
 
 sub CreateItem($)
diff --git a/testbot/lib/WineTestBot/WineTestBotObjects.pm b/testbot/lib/WineTestBot/WineTestBotObjects.pm
index 20ff6b1e3..bc34b74c8 100644
--- a/testbot/lib/WineTestBot/WineTestBotObjects.pm
+++ b/testbot/lib/WineTestBot/WineTestBotObjects.pm
@@ -25,14 +25,12 @@ WineTestBot::WineTestBotItem - Base item class for WineTestBot
 
 =cut
 
-use ObjectModel::BackEnd;
 use ObjectModel::Item;
-use WineTestBot::Config;
+our @ISA = qw(ObjectModel::Item);
 
-use vars qw (@ISA @EXPORT);
+use ObjectModel::BackEnd;
+use WineTestBot::Config;
 
-require Exporter;
- at ISA = qw(ObjectModel::Item Exporter);
 
 sub GetBackEnd($)
 {
@@ -49,15 +47,13 @@ WineTestBot::WineTestBotCollection - Base collection class for WineTestBot
 
 =cut
 
+use ObjectModel::Collection;
+our @ISA = qw(ObjectModel::Collection);
+
 use ObjectModel::BackEnd;
-use ObjectModel::Item;
+use WineTestBot::Item;
 use WineTestBot::Config;
 
-use vars qw (@ISA @EXPORT);
-
-require Exporter;
- at ISA = qw(ObjectModel::Collection Exporter);
-
 sub GetBackEnd($)
 {
   #my ($self) = @_;
diff --git a/testbot/web/index.pl b/testbot/web/index.pl
index 427d7f6b9..72bd307d5 100644
--- a/testbot/web/index.pl
+++ b/testbot/web/index.pl
@@ -21,13 +21,12 @@ use strict;
 
 package JobStatusBlock;
 
-use URI::Escape;
 use ObjectModel::CGI::CollectionBlock;
-use WineTestBot::Branches;
+our @ISA = qw(ObjectModel::CGI::CollectionBlock);
 
-use vars qw(@ISA);
+use URI::Escape;
+use WineTestBot::Branches;
 
- at ISA = qw(ObjectModel::CGI::CollectionBlock);
 
 sub SortKeys($$)
 {
@@ -140,13 +139,12 @@ sub GenerateDataCell($$$$)
   }
 }
 
+
 package VMStatusBlock;
 
 use ObjectModel::CGI::CollectionBlock;
+our @ISA = qw(ObjectModel::CGI::CollectionBlock);
 
-use vars qw(@ISA);
-
- at ISA = qw(ObjectModel::CGI::CollectionBlock);
 
 sub SortKeys($$)
 {
@@ -183,16 +181,18 @@ sub GetDetailsPage($)
   return undef;
 }
 
+
 package StatusPage;
 
 use ObjectModel::CGI::Page;
+our @ISA = qw(ObjectModel::CGI::Page);
+
 use WineTestBot::Config;
 use WineTestBot::Engine::Notify;
 use WineTestBot::Jobs;
 use WineTestBot::Log;
 use WineTestBot::VMs;
 
- at StatusPage::ISA = qw(ObjectModel::CGI::Page);
 
 sub _initialize($$$)
 {
@@ -303,6 +303,7 @@ EOF
   print "<p class='GeneralFooterText'>Generated in ", Elapsed($self->{start}), " s</p>\n";
 }
 
+
 package main;
 
 my $Request = shift;
-- 
2.17.0



More information about the wine-devel mailing list