| <!DOCTYPE html> |
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| <head> |
| <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> |
| <meta content="en-us" http-equiv="Content-Language" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| |
| <link href="/static/images/favicon.ico" rel="shortcut icon" /> |
| <link href="/static/css/style.css" rel="stylesheet" type="text/css" /> |
| <link href="/static/css/codehilite.css" rel="stylesheet" type="text/css" /> |
| <link href="/static/css/bootstrap.css" media="screen, projection" rel="stylesheet" type="text/css" /> |
| <link href="/static/css/thrift.css" media="screen, projection" rel="stylesheet" type="text/css" /> |
| |
| <script src="/static/js/jquery.min.js"></script> |
| <script src="/static/js/bootstrap-dropdown.js"></script> |
| <script src="/static/js/bootstrap-tab.js"></script> |
| <script src="/static/js/thrift.js"></script> |
| |
| <title>Apache Thrift - Perl library</title> |
| </head> |
| <body> |
| <div class="navbar"> |
| <div class="navbar-inner"> |
| <div class="container"> |
| <a class="brand" href="/">Apache Thrift ™</a> |
| <div class="nav-collapse"> |
| <ul class="nav pull-right"> |
| <li><a href="/download">Download</a></li> |
| <li><a href="/docs">Documentation</a></li> |
| <li><a href="/developers">Developers</a></li> |
| <li><a href="/lib">Libraries</a></li> |
| <li><a href="/tutorial">Tutorial</a></li> |
| <li><a href="/test">Test Suite</a></li> |
| <li><a href="/about">About</a></li> |
| <li class="dropdown"> |
| <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="http://www.apache.org/" target="_blank">Apache Home</a></li> |
| <li><a href="http://www.apache.org/licenses/" target="_blank">Apache License v2.0</a></li> |
| <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a></li> |
| <li><a href="http://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a></li> |
| <li><a href="http://www.apache.org/security/" target="_blank">Security</a></li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container"> |
| |
| <h1 id="using-thrift-with-perl">Using Thrift with Perl</h1> |
| |
| <p>Thrift requires Perl >= 5.10.0</p> |
| |
| <p>Unexpected exceptions in a service handler are converted to |
| TApplicationException with type INTERNAL ERROR and the string |
| of the exception is delivered as the message.</p> |
| |
| <p>On the client side, exceptions are thrown with die, so be sure |
| to wrap eval{} statments around any code that contains exceptions.</p> |
| |
| <p>Please see tutoral and test dirs for examples.</p> |
| |
| <p>The Perl ForkingServer ignores SIGCHLD allowing the forks to be |
| reaped by the operating system naturally when they exit. This means |
| one cannot use a custom SIGCHLD handler in the consuming perl |
| implementation that calls serve(). It is acceptable to use |
| a custom SIGCHLD handler within a thrift handler implementation |
| as the ForkingServer resets the forked child process to use |
| default signal handling.</p> |
| |
| <h1 id="dependencies">Dependencies</h1> |
| |
| <p>The following modules are not provided by Perl 5.10.0 but are required |
| to use Thrift.</p> |
| |
| <h2 id="runtime">Runtime</h2> |
| |
| <ul> |
| <li>Bit::Vector</li> |
| <li>Class::Accessor</li> |
| </ul> |
| |
| <h2 id="test">Test</h2> |
| |
| <p>This is only required when running tests:</p> |
| |
| <ul> |
| <li>Test::Exception</li> |
| </ul> |
| |
| <h3 id="httpclient-transport">HttpClient Transport</h3> |
| |
| <p>These are only required if using Thrift::HttpClient:</p> |
| |
| <ul> |
| <li>HTTP::Request</li> |
| <li>IO::String</li> |
| <li>LWP::UserAgent</li> |
| </ul> |
| |
| <h3 id="ssltls">SSL/TLS</h3> |
| |
| <p>These are only required if using Thrift::SSLSocket or Thrift::SSLServerSocket:</p> |
| |
| <ul> |
| <li>IO::Socket::SSL</li> |
| </ul> |
| |
| <h1 id="breaking-changes">Breaking Changes</h1> |
| |
| <h2 id="section">0.10.0</h2> |
| |
| <p>The socket classes were refactored in 0.10.0 so that there is one package per |
| file. This means <code>use Socket;</code> no longer defines SSLSocket. You can use this |
| technique to make your application run against 0.10.0 as well as earlier versions:</p> |
| |
| <p><code>eval { require Thrift::SSLSocket; } or do { require Thrift::Socket; }</code></p> |
| |
| <h2 id="section-1">0.11.0</h2> |
| |
| <ul> |
| <li>Namespaces of packages that were not scoped within Thrift have been fixed. |
| ** TApplicationException is now Thrift::TApplicationException |
| ** TException is now Thrift::TException |
| ** TMessageType is now Thrift::TMessageType |
| ** TProtocolException is now Thrift::TProtocolException |
| ** TProtocolFactory is now Thrift::TProtocolFactory |
| ** TTransportException is now Thrift::TTransportException |
| ** TType is now Thrift::TType</li> |
| </ul> |
| |
| <p>If you need a single version of your code to work with both older and newer thrift |
| namespace changes, you can make the new, correct namespaces behave like the old ones |
| in your files with this technique to create an alias, which will allow you code to |
| run against either version of the perl runtime for thrift:</p> |
| |
| <p><code>BEGIN {*TType:: = *Thrift::TType::}</code></p> |
| |
| <ul> |
| <li>Packages found in Thrift.pm were moved into the Thrift/ directory in separate files: |
| ** Thrift::TApplicationException is now in Thrift/Exception.pm |
| ** Thrift::TException is now in Thrift/Exception.pm |
| ** Thrift::TMessageType is now in Thrift/MessageType.pm |
| ** Thrift::TType is now in Thrift/Type.pm</li> |
| </ul> |
| |
| <p>If you need to modify your code to work against both older or newer thrift versions, |
| you can deal with these changes in a backwards compatible way in your projects using eval:</p> |
| |
| <p><code>eval { require Thrift::Exception; require Thrift::MessageType; require Thrift::Type; } |
| or do { require Thrift; }</code></p> |
| |
| <h1 id="deprecations">Deprecations</h1> |
| |
| <h2 id="section-2">0.11.0</h2> |
| |
| <p>Thrift::HttpClient setRecvTimeout() and setSendTimeout() are deprecated. |
| Use setTimeout instead.</p> |
| |
| <p class="snippet_footer">This page was generated by Apache Thrift's <strong>source tree docs</strong>: |
| <a href="https://gitbox.apache.org/repos/asf?p=thrift.git;a=blob;hb=HEAD;f=lib/perl/README.md">lib/perl/README.md</a> |
| </p> |
| |
| |
| </div> |
| <div class="container"> |
| <hr> |
| <footer class="footer"> |
| <div class="row"> |
| <div class="span3"> |
| <h3>Links</h3> |
| <ul class="unstyled"> |
| <li><a href="/download">Download</a></li> |
| <li><a href="/developers">Developers</a></li> |
| <li><a href="/tutorial">Tutorials</a></li> |
| </ul> |
| <ul class="unstyled"> |
| <li><a href="/sitemap">Sitemap</a></li> |
| </ul> |
| </div> |
| <div class="span3"> |
| <h3>Get Involved</h3> |
| <ul class="unstyled"> |
| <li><a href="/mailing">Mailing Lists</a></li> |
| <li><a href="http://issues.apache.org/jira/browse/THRIFT">Issue Tracking</a></li> |
| <li><a href="/docs/HowToContribute">How To Contribute</a></li> |
| </ul> |
| </div> |
| <div class="span6"> |
| <a href="http://www.apache.org/"><img src="/static/images/feather.svg" onerror="this.src='/static/images/feather.png';this.onerror=null;" /></a> |
| Copyright © 2024 <a href="http://www.apache.org/">Apache Software Foundation</a>. |
| Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. |
| Apache, Apache Thrift, and the Apache feather logo are trademarks of The Apache Software Foundation. |
| </div> |
| </div> |
| </footer> |
| </div> |
| |
| </body> |
| </html> |