How To Install The Latest SOAP::Lite Using Perl CPAN
Wednesday, April 30th, 2008
Apparently it's not straightforward to install SOAP::Lite, even using CPAN.
Check this out.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | cpan[1]> install SOAP::Lite
CPAN: Storable loaded ok (v2.18)
Going to read /root/.cpan/Metadata
Database was generated on Tue, 29 Apr 2008 18:29:45 GMT
CPAN: YAML loaded ok (v0.66)
Going to read /root/.cpan/build/
............................................................................DONE
Found 149 old builds, restored the state of 109
Warning: Cannot install SOAP::Lite, don't know what it is.
Try the command
i /SOAP::Lite/
to find objects with matching identifiers.
CPAN: Time::HiRes loaded ok (v1.9713) |
Huh? Okay…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | cpan[2]> i /SOAP::Lite/ Module ResourcePool::Command::SOAP::Lite::Call (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module ResourcePool::Factory::SOAP::Lite (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module ResourcePool::Resource::SOAP::Lite (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module SOAP::Lite::Deserializer::XMLSchema1999 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::Deserializer::XMLSchema2001 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::Deserializer::XMLSchemaSOAP1_1 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::Deserializer::XMLSchemaSOAP1_2 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::InstanceExporter (SMEISNER/SOAP-Lite-InstanceExporter-0.02.tar.gz) Module SOAP::Lite::Packager (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::Simple (LLAP/SOAP-Lite-Simple-1.9.tar.gz) Module SOAP::Lite::Simple::DotNet (LLAP/SOAP-Lite-Simple-1.4.tar.gz) Module SOAP::Lite::Simple::Real (LLAP/SOAP-Lite-Simple-1.4.tar.gz) Module SOAP::Lite::Utility (BRYCE/SOAP-Lite-Utility-0.01.tar.gz) Module SOAP::Lite::Utils (MKUTTER/SOAP-Lite-0.71.04.tar.gz) 14 items found |
Wtf? Let's try something else.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | cpan[8]> i /SOAP.*Lite/ Distribution BRYCE/SOAP-Lite-Utility-0.01.tar.gz Distribution BYRNE/SOAP/SOAP-Lite-0.60a.tar.gz Distribution DYACOB/SOAP-Lite-ActiveWorks-0.10.tar.gz Distribution DYACOB/SOAP-Lite-SmartProxy-0.11.tar.gz Distribution LLAP/SOAP-Lite-Simple-1.4.tar.gz Distribution LLAP/SOAP-Lite-Simple-1.9.tar.gz Distribution MKUTTER/SOAP-Lite-0.71.04.tar.gz Distribution MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz Distribution SMEISNER/SOAP-Lite-InstanceExporter-0.02.tar.gz Module Catalyst::Action::SOAP::DocumentLiteral (DRUOSO/Catalyst-Controller-SOAP-0.8.tar.gz) Module Catalyst::Action::SOAP::DocumentLiteralWrapped (DRUOSO/Catalyst-Controller-SOAP-0.8.tar.gz) Module Catalyst::Action::SOAP::RPCLiteral (DRUOSO/Catalyst-Controller-SOAP-0.8.tar.gz) Module Catalyst::Controller::SOAP::DocumentLiteralWrapped (DRUOSO/Catalyst-Controller-SOAP-0.8.tar.gz) Module Net::DRI::Transport::HTTP::SOAPLite (PMEVZEK/Net-DRI-0.85.tar.gz) Module ResourcePool::Command::SOAP::Lite::Call (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module ResourcePool::Factory::SOAP::Lite (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module ResourcePool::Resource::SOAP::Lite (MWS/ResourcePool-Resource-SOAP-Lite-1.0101.tar.gz) Module = SOAP::Lite::Deserializer::XMLSchema1999 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module = SOAP::Lite::Deserializer::XMLSchema2001 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module = SOAP::Lite::Deserializer::XMLSchemaSOAP1_1 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module = SOAP::Lite::Deserializer::XMLSchemaSOAP1_2 (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::InstanceExporter (SMEISNER/SOAP-Lite-InstanceExporter-0.02.tar.gz) Module = SOAP::Lite::Packager (MKUTTER/SOAP-Lite-0.71.04.tar.gz) Module SOAP::Lite::Simple (LLAP/SOAP-Lite-Simple-1.9.tar.gz) Module SOAP::Lite::Simple::DotNet (LLAP/SOAP-Lite-Simple-1.4.tar.gz) Module SOAP::Lite::Simple::Real (LLAP/SOAP-Lite-Simple-1.4.tar.gz) Module SOAP::Lite::Utility (BRYCE/SOAP-Lite-Utility-0.01.tar.gz) Module = SOAP::Lite::Utils (MKUTTER/SOAP-Lite-0.71.04.tar.gz) 28 items found |
Aha! It's hiding under a Distribution. Tricky, tricky.
1 2 | cpan install MKUTTER/SOAP-Lite-0.71.04.tar.gz |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | CPAN.pm: Going to build M/MK/MKUTTER/SOAP-Lite-0.71.04.tar.gz
We are about to install SOAP::Lite and for your convenience will provide
you with list of modules and prerequisites, so you'll be able to choose
only modules you need for your configuration.
XMLRPC::Lite, UDDI::Lite, and XML::Parser::Lite are included by default.
Installed transports can be used for both SOAP::Lite and XMLRPC::Lite.
Press to see the detailed list.
Feature Prerequisites Install?
----------------------------- ---------------------------- --------
Core Package [*] Scalar::Util always
[*] Test::More
[*] URI
[*] MIME::Base64
[*] version
[*] XML::Parser (v2.23)
Client HTTP support [*] LWP::UserAgent always
Client HTTPS support [*] Crypt::SSLeay [ yes ]
Client SMTP/sendmail support [ ] MIME::Lite [ no ]
Client FTP support [*] IO::File [ yes ]
[*] Net::FTP
Standalone HTTP server [*] HTTP::Daemon [ yes ]
Apache/mod_perl server [ ] Apache [ no ]
FastCGI server [ ] FCGI [ no ]
POP3 server [*] MIME::Parser [ yes ]
[*] Net::POP3
IO server [*] IO::File [ yes ]
MQ transport support [ ] MQSeries [ no ]
JABBER transport support [ ] Net::Jabber [ no ]
MIME messages [*] MIME::Parser [ yes ]
DIME messages [*] IO::Scalar (v2.105) [ no ]
[ ] DIME::Tools (v0.03)
[ ] Data::UUID (v0.11)
SSL Support for TCP Transport [ ] IO::Socket::SSL [ no ]
Compression support for HTTP [*] Compress::Zlib [ yes ]
MIME interoperability w/ Axis [ ] MIME::Parser (v6.106) [ no ]
--- An asterix '[*]' indicates if the module is currently installed.
Do you want to proceed with this configuration? [yes]
Checking if your kit is complete...
Looks good
Writing Makefile for SOAP::Lite
cp lib/SOAP/Packager.pm blib/lib/SOAP/Packager.pm
cp lib/XML/Parser/Lite.pm blib/lib/XML/Parser/Lite.pm
...
Writing /usr/lib/perl5/site_perl/5.10.0/i686-linux/auto/SOAP/Lite/.packlist
Appending installation info to /usr/lib/perl5/5.10.0/i686-linux/perllocal.pod
MKUTTER/SOAP-Lite-0.71.04.tar.gz
/usr/bin/make install -- OK |
The latest version of SOAP::Lite is installed, time to pat yourself on the back and write some code to actually use it.
Interesting Uses For Google Streetview (Video By Google)
Tuesday, April 29th, 2008
By now I think most everyone has used Google maps and seen the street view feature. Lately the maps team has been doing an amazing job covering the bay area, so now you can literally walk the streets for hours.
Virtual walking aside, there are some really creative uses of this feature posted in this video by the Google team today. I never myself thought to check my own street for street cleaning signs - saves a trip downstairs! Or look at the toll road prices (like the Bay bridge toll). Or at least watch people falling off their bikes. Anyway, just watch the video (thanks to zefrank for posting it).
How Do I Get Both The Return Value And Text In Perl? Backticks vs. System() (Perl 5.10)
Tuesday, April 29th, 2008
I'm sure most Perl coders have to face this annoying problem at one point or another: how do you consistently get the return value out of a system call, be at executed via backticks or system()? Backticks return the output of the program with no error code in sight, while system() returns the error code but prints the output instead of putting it into a variable.
The best solution I could find to this problem to date was posted at http://www.perlmonks.org/?node_id=19119 and involved opening a piped filehandle. It worked quite well but always felt like a hack (which it was). Having used the new Perl 5.10 for a few months, I was shocked today to find this new variable that I've been dreaming about for years:
1 | ${^CHILD_ERROR_NATIVE} |
This variable gives the native status returned by the last pipe close, backtick command, successful call to wait() or waitpid(), or from the system() operator. See perlrun for details. (Contributed by Gisle Aas.)
http://search.cpan.org/dist/perl-5.10.0/pod/perl5100delta.pod#New_internal_variables
I've just tested it and it works as described. Finally!.. what else can I say?
How To List Files Within tgz (tar.gz) Archives
Saturday, April 26th, 2008
This may not be very obvious but this is the command line to list files within a tar.gz archive on the fly:
1 | tar -tzf file.tar.gz |
-t: lists files
-f: instructs tar to deal with the following filename (file.tar.gz)
-z: informs tar that the it's dealing with a gzip file (-j if it's bzip2)
Do NOT Use This Perl Module: Passwd::Unix
Tuesday, April 22nd, 2008
Updated: April 29th, 2008
Update: The author of the module contacted me the same day and promised to fix it in the next version. Version 0.40 was indeed on cpan as promised, but I haven't tested it yet.
Passwd::Unix will corrupt your /etc/shadow file and rearrange login names and their corresponding password hashes.
The current version of Passwd::Unix corrupted my /etc/shadow upon only
calling the passwd() function. Immediately users started to report not
being able to login.
After examining the situation, I found that Passwd::Unix rearranges all
users in /etc/shadow in some way, but it only does it to the
usernames, and not the password hashes. Thus, you will get corrupted accounts. Moreover,
users are now able to login to one OTHER account, not their own,
depending on how the usernames got shuffled.
Thankfully, I had a recent backup but I definitely don’t want anyone
else to suffer.
I’m using perl 5.10, SUSE 10.3. If it’s incompatible with SUSE, it needs
to say so and exit.
I've filed the bug here: http://rt.cpan.org/Public/Bug/Display.html?id=35323.
You have been warned.

(No Ratings Yet)
beer planet is Artem Russakovskii's blog. Artem is a software engineer at 


