Cleaned up the code even more:
#!/usr/bin/perl
use strict;
use warnings;
use Win32::OLE::Const;
Win32::OLE->Option( Warn => 2 );
use File::Slurp;
use XML::TreeBuilder;
my $rand = rand 999999999;
my $app_name = "Test $rand";
# http://www.devx.com/xml/Article/30482/1763/page/2
# only relevant if you develop software for QuickBooks that you intend
+ to sell to other parties.
my $app_id = '';
my $qb_company_file = "";
my $request_xml_file = "vendor_query.xml";
main();
sub main {
my $qbxmlrp_const = Win32::OLE::Const->Load("QBXMLRP2 1.0 Type Lib
+rary");
my $request_processor =
Win32::OLE->new( "QBXMLRP2.RequestProcessor",
sub { $_[0]->CloseConnection(); } )
or die "oops\n";
$request_processor->OpenConnection2( $app_id, $app_name,
$qbxmlrp_const->{"localQBD"} );
my $ticket =
$request_processor->BeginSession( $qb_company_file,
$qbxmlrp_const->{"qbFileOpenDoNotCare"} );
my $request_xml_string = File::Slurp::read_file($request_xml_file)
+;
my $response_xml_string =
$request_processor->ProcessRequest( $ticket, $request_xml_string
+ );
warn $response_xml_string;
}
# # Read the contents of a file into a string.
# # Accepts filename as a parameter and returns the file contents.
# sub read_file($) {
# my $filename = shift;
# my $file_data;
# local ($/) = undef;
# my $file_handle = IO::File->new();
# $file_handle->open($filename);
# $file_data = <$file_handle>;
# $file_handle->close();
# return $file_data;
# }