The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
<!--
This file was generated by Devel::NYTProf version 3.11
-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <title>Profile of /data/SimpleDB-Client/author.t/../lib/SimpleDB/Client.pm</title>
<link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="js/jquery-min.js"></script> 

    <script type="text/javascript" src="js/jquery-tablesorter-min.js"></script> 
    <link rel="stylesheet" type="text/css" href="js/style-tablesorter.css" />
    <script type="text/javascript">
    // when a column is first clicked on to sort it, use descending order
    // XXX doesn't seem to work (and not just because the tablesorter formatSortingOrder() is broken)
    $.tablesorter.defaults.sortInitialOrder = "desc";
    // add parser through the tablesorter addParser method 
    $.tablesorter.addParser({
        id: 'fmt_time',   // name of this parser
        is: function(s) { 
            return false; // return false so this parser is not auto detected 
        }, 
        format: function(orig) { // format data for normalization 
            // console.log(orig);
            val = orig.replace(/ns/,'');
            if (val != orig) { return val / (1000*1000*1000); } 
            val = orig.replace(/µs/,''); /* XXX use &micro; ? */
            if (val != orig) { return val / (1000*1000); } 
            var val = orig.replace(/ms/,'');
            if (val != orig) { return val / (1000); }
            var val = orig.replace(/s/,'');
            if (val != orig) { return val; }
            if (orig == '0') { return orig; } 
            console.log('no match for fmt_time of '.concat(orig));
            return orig;
        },
        type: 'numeric' // set type, either numeric or text 
    }); 
    </script> 
</head>
<body > 
<div class="header" style="position: relative; overflow-x: hidden; overflow-y: hidden; z-index: 0; ">
<div class="header_back">
            <a href="index.html">&larr; Index</a>
        </div>
<div class="headerForeground" style="float: left">
    <span class="siteTitle">NYTProf Performance Profile</span>
    <span class="siteSubtitle">&emsp;&emsp;<span>&laquo;&emsp;<span class="mode_btn"><a href="lib-SimpleDB-Client-pm-block.html">block view</a></span>&emsp;&bull;&emsp;<span class="mode_btn mode_btn_selected">line view</span>&emsp;&bull;&emsp;<span class="mode_btn"><a href="lib-SimpleDB-Client-pm-sub.html">sub view</a></span>&emsp;&raquo;</span><br />
            For 01.HTTP.t
        </span>
</div>
<div class="headerForeground" style="float: right; text-align: right">
    <span class="siteTitle">&nbsp;</span>
    <span class="siteSubtitle">Run on Tue May  4 15:25:55 2010<br />Reported on Tue May  4 15:26:21 2010</span>
</div>
<div style="position: absolute; left: 0px; top: 0%; width: 100%; height: 101%; z-index: -1; background-color: rgb(17, 136, 255); "></div>
<div style="position: absolute; left: 0px; top: 2%; width: 100%; height: 99%; z-index: -1; background-color: rgb(16, 134, 253); "></div>
<div style="position: absolute; left: 0px; top: 4%; width: 100%; height: 97%; z-index: -1; background-color: rgb(16, 133, 252); "></div>
<div style="position: absolute; left: 0px; top: 6%; width: 100%; height: 95%; z-index: -1; background-color: rgb(15, 131, 250); "></div>
<div style="position: absolute; left: 0px; top: 8%; width: 100%; height: 93%; z-index: -1; background-color: rgb(15, 130, 249); "></div>
<div style="position: absolute; left: 0px; top: 10%; width: 100%; height: 91%; z-index: -1; background-color: rgb(15, 129, 248); "></div>
<div style="position: absolute; left: 0px; top: 12%; width: 100%; height: 89%; z-index: -1; background-color: rgb(14, 127, 246); "></div>
<div style="position: absolute; left: 0px; top: 14%; width: 100%; height: 87%; z-index: -1; background-color: rgb(14, 126, 245); "></div>
<div style="position: absolute; left: 0px; top: 16%; width: 100%; height: 85%; z-index: -1; background-color: rgb(14, 125, 244); "></div>
<div style="position: absolute; left: 0px; top: 18%; width: 100%; height: 83%; z-index: -1; background-color: rgb(13, 123, 242); "></div>
<div style="position: absolute; left: 0px; top: 20%; width: 100%; height: 81%; z-index: -1; background-color: rgb(13, 122, 241); "></div>
<div style="position: absolute; left: 0px; top: 22%; width: 100%; height: 79%; z-index: -1; background-color: rgb(13, 121, 240); "></div>
<div style="position: absolute; left: 0px; top: 24%; width: 100%; height: 77%; z-index: -1; background-color: rgb(12, 119, 238); "></div>
<div style="position: absolute; left: 0px; top: 26%; width: 100%; height: 75%; z-index: -1; background-color: rgb(12, 118, 237); "></div>
<div style="position: absolute; left: 0px; top: 28%; width: 100%; height: 73%; z-index: -1; background-color: rgb(12, 116, 235); "></div>
<div style="position: absolute; left: 0px; top: 30%; width: 100%; height: 71%; z-index: -1; background-color: rgb(11, 115, 234); "></div>
<div style="position: absolute; left: 0px; top: 32%; width: 100%; height: 69%; z-index: -1; background-color: rgb(11, 114, 233); "></div>
<div style="position: absolute; left: 0px; top: 34%; width: 100%; height: 67%; z-index: -1; background-color: rgb(11, 112, 231); "></div>
<div style="position: absolute; left: 0px; top: 36%; width: 100%; height: 65%; z-index: -1; background-color: rgb(10, 111, 230); "></div>
<div style="position: absolute; left: 0px; top: 38%; width: 100%; height: 63%; z-index: -1; background-color: rgb(10, 110, 229); "></div>
<div style="position: absolute; left: 0px; top: 40%; width: 100%; height: 61%; z-index: -1; background-color: rgb(10, 108, 227); "></div>
<div style="position: absolute; left: 0px; top: 42%; width: 100%; height: 59%; z-index: -1; background-color: rgb(9, 107, 226); "></div>
<div style="position: absolute; left: 0px; top: 44%; width: 100%; height: 57%; z-index: -1; background-color: rgb(9, 106, 225); "></div>
<div style="position: absolute; left: 0px; top: 46%; width: 100%; height: 55%; z-index: -1; background-color: rgb(9, 104, 223); "></div>
<div style="position: absolute; left: 0px; top: 48%; width: 100%; height: 53%; z-index: -1; background-color: rgb(8, 103, 222); "></div>
<div style="position: absolute; left: 0px; top: 50%; width: 100%; height: 51%; z-index: -1; background-color: rgb(8, 102, 221); "></div>
<div style="position: absolute; left: 0px; top: 52%; width: 100%; height: 49%; z-index: -1; background-color: rgb(8, 100, 219); "></div>
<div style="position: absolute; left: 0px; top: 54%; width: 100%; height: 47%; z-index: -1; background-color: rgb(7, 99, 218); "></div>
<div style="position: absolute; left: 0px; top: 56%; width: 100%; height: 45%; z-index: -1; background-color: rgb(7, 97, 216); "></div>
<div style="position: absolute; left: 0px; top: 58%; width: 100%; height: 43%; z-index: -1; background-color: rgb(7, 96, 215); "></div>
<div style="position: absolute; left: 0px; top: 60%; width: 100%; height: 41%; z-index: -1; background-color: rgb(6, 95, 214); "></div>
<div style="position: absolute; left: 0px; top: 62%; width: 100%; height: 39%; z-index: -1; background-color: rgb(6, 93, 212); "></div>
<div style="position: absolute; left: 0px; top: 64%; width: 100%; height: 37%; z-index: -1; background-color: rgb(6, 92, 211); "></div>
<div style="position: absolute; left: 0px; top: 66%; width: 100%; height: 35%; z-index: -1; background-color: rgb(5, 91, 210); "></div>
<div style="position: absolute; left: 0px; top: 68%; width: 100%; height: 33%; z-index: -1; background-color: rgb(5, 89, 208); "></div>
<div style="position: absolute; left: 0px; top: 70%; width: 100%; height: 31%; z-index: -1; background-color: rgb(5, 88, 207); "></div>
<div style="position: absolute; left: 0px; top: 72%; width: 100%; height: 29%; z-index: -1; background-color: rgb(4, 87, 206); "></div>
<div style="position: absolute; left: 0px; top: 74%; width: 100%; height: 27%; z-index: -1; background-color: rgb(4, 85, 204); "></div>
<div style="position: absolute; left: 0px; top: 76%; width: 100%; height: 25%; z-index: -1; background-color: rgb(4, 84, 203); "></div>
<div style="position: absolute; left: 0px; top: 78%; width: 100%; height: 23%; z-index: -1; background-color: rgb(3, 82, 201); "></div>
<div style="position: absolute; left: 0px; top: 80%; width: 100%; height: 21%; z-index: -1; background-color: rgb(3, 81, 200); "></div>
<div style="position: absolute; left: 0px; top: 82%; width: 100%; height: 19%; z-index: -1; background-color: rgb(3, 80, 199); "></div>
<div style="position: absolute; left: 0px; top: 84%; width: 100%; height: 17%; z-index: -1; background-color: rgb(2, 78, 197); "></div>
<div style="position: absolute; left: 0px; top: 86%; width: 100%; height: 15%; z-index: -1; background-color: rgb(2, 77, 196); "></div>
<div style="position: absolute; left: 0px; top: 88%; width: 100%; height: 13%; z-index: -1; background-color: rgb(2, 76, 195); "></div>
<div style="position: absolute; left: 0px; top: 90%; width: 100%; height: 11%; z-index: -1; background-color: rgb(1, 74, 193); "></div>
<div style="position: absolute; left: 0px; top: 92%; width: 100%; height: 9%; z-index: -1; background-color: rgb(1, 73, 192); "></div>
<div style="position: absolute; left: 0px; top: 94%; width: 100%; height: 7%; z-index: -1; background-color: rgb(1, 72, 191); "></div>
<div style="position: absolute; left: 0px; top: 96%; width: 100%; height: 5%; z-index: -1; background-color: rgb(0, 70, 189); "></div>
<div style="position: absolute; left: 0px; top: 98%; width: 100%; height: 3%; z-index: -1; background-color: rgb(0, 69, 188); "></div>
<div style="position: absolute; left: 0px; top: 100%; width: 100%; height: 1%; z-index: -1; background-color: rgb(0, 68, 187); "></div>
</div>

<div class="body_content">
<br />
<table>
<tr>
<td class="h" align="right">File</td>
<td align="left">/data/SimpleDB-Client/author.t/../lib/SimpleDB/Client.pm</td>
</tr>
<tr>
<td class="h" align="right">Statements Executed</td>
<td align="left">147</td>
</tr>
<tr>
<td class="h" align="right">Statement Execution Time</td>
<td align="left">2.47ms</td>
</tr>
</table>

        
        <table id="subs_table" border="1" cellpadding="0" class="tablesorter">
        <caption>Subroutines &mdash; ordered by exclusive time</caption>
        <thead>
        <tr>
        <th>Calls</th>
        <th><span title="Number of Places sub is called from">P</span></th>
        <th><span title="Number of Files sub is called from">F</span></th>
        <th>Exclusive<br />Time</th>
        <th>Inclusive<br />Time</th>
        <th>Subroutine</th>
        </tr>
        </thead>
    <tbody>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="1.0%">10.6ms</span></td><td class="c0"><span title="1.1%">11.7ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@47</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#47">BEGIN@47</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.4%">4.71ms</span></td><td class="c0"><span title="7.6%">83.5ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@49</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#49">BEGIN@49</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.3%">3.81ms</span></td><td class="c0"><span title="2.3%">24.7ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@48</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#48">BEGIN@48</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.2%">1.86ms</span></td><td class="c0"><span title="32.0%">350ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@46</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#46">BEGIN@46</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">485&micro;s</span></td><td class="c3"><span title="0.1%">1.21ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@51</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#51">BEGIN@51</a></span></td></tr>
<tr><td class="c0">3</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.0%">418&micro;s</span></td><td class="c3"><span title="0.2%">2.29ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::construct_request</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#152">construct_request</a></span></td></tr>
<tr><td class="c0">3</td><td class="c0">3</td><td class="c3">1</td><td class="c0"><span title="0.0%">264&micro;s</span></td><td class="c0"><span title="33.6%">367ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::send_request</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#201">send_request</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c1"><span title="0.0%">171&micro;s</span></td><td class="c0"><span title="1.7%">18.9ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@53</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#53">BEGIN@53</a></span></td></tr>
<tr><td class="c0">3</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">67&micro;s</span></td><td class="c3"><span title="0.1%">550&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::handle_response</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#243">handle_response</a></span></td></tr>
<tr><td class="c0">3</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">13&micro;s</span></td><td class="c3"><span title="0.0%">13&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::__ANON__[../lib/SimpleDB/Client.pm:160]</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#160">__ANON__[../lib/SimpleDB/Client.pm:160]</a></span></td></tr>
<tr><td class="c0">3</td><td class="c3">1</td><td class="c1">2</td><td class="c3"><span title="0.0%">13&micro;s</span></td><td class="c3"><span title="0.0%">13&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::CORE:sort</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#SimpleDB__Client__CORE_sort">CORE:sort</a>&nbsp;(opcode)</span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">12&micro;s</span></td><td class="c3"><span title="0.0%">170&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@331</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#331">BEGIN@331</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">12&micro;s</span></td><td class="c3"><span title="0.0%">62&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@52</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#52">BEGIN@52</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">9&micro;s</span></td><td class="c3"><span title="0.0%">9&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@54</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#54">BEGIN@54</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">9&micro;s</span></td><td class="c0"><span title="0.8%">8.99ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::__ANON__[../lib/SimpleDB/Client.pm:133]</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#133">__ANON__[../lib/SimpleDB/Client.pm:133]</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">8&micro;s</span></td><td class="c3"><span title="0.0%">8&micro;s</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::BEGIN@50</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#50">BEGIN@50</a></span></td></tr>
<tr><td class="c3">1</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">7&micro;s</span></td><td class="c1"><span title="0.5%">5.56ms</span></td><td class="sub_name"><span style="display: none;">SimpleDB::Client::::__ANON__[../lib/SimpleDB/Client.pm:120]</span>SimpleDB::Client::<a href="lib-SimpleDB-Client-pm-line.html#120">__ANON__[../lib/SimpleDB/Client.pm:120]</a></span></td></tr>

        </tbody>
        </table>
    
        Call graph for these subroutines as a <a href="http://en.wikipedia.org/wiki/Graphviz">Graphviz</a> <a href="data-SimpleDB-Client-author-t-lib-SimpleDB-Client-pm.dot">dot language file</a>.
      <table border="1" cellpadding="0">
      <thead>
      <tr><th>Line</th>
      <th><span title="Number of statements executed">State<br />ments</span></th>
      <th><span title="Time spend executing statements on the line,
        excluding time spent executing statements in any called subroutines">Time<br />on line</span></th>
      <th><span title="Number of subroutines calls">Calls</span></th>
      <th><span title="Time spent in subroutines called">Time<br />in subs</span></th>
      <th class="left_indent_header">Code</th>
      </tr>

      </thead>
      <tbody>
    <tr><td class="h"><a name="1"></a>1</td><td></td><td></td><td></td><td></td><td class="s">package SimpleDB::Client;</td></tr>
<tr><td class="h"><a name="2"></a>2</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3"></a>3</td><td></td><td></td><td></td><td></td><td class="s">=head1 NAME</td></tr>
<tr><td class="h"><a name="4"></a>4</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5"></a>5</td><td></td><td></td><td></td><td></td><td class="s">SimpleDB::Client - The network interface to the SimpleDB service.</td></tr>
<tr><td class="h"><a name="6"></a>6</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="7"></a>7</td><td></td><td></td><td></td><td></td><td class="s">=head1 SYNOPSIS</td></tr>
<tr><td class="h"><a name="8"></a>8</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="9"></a>9</td><td></td><td></td><td></td><td></td><td class="s"> use SimpleDB::Client;</td></tr>
<tr><td class="h"><a name="10"></a>10</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="11"></a>11</td><td></td><td></td><td></td><td></td><td class="s"> my $sdb = SimpleDB::Client-&gt;new(secret_key=&gt;'abc', access_key=&gt;'123');</td></tr>
<tr><td class="h"><a name="12"></a>12</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="13"></a>13</td><td></td><td></td><td></td><td></td><td class="s"> # create a domain</td></tr>
<tr><td class="h"><a name="14"></a>14</td><td></td><td></td><td></td><td></td><td class="s"> my $hashref = $sdb-&gt;send_request('CreateDomain', {DomainName =&gt; 'my_things'});</td></tr>
<tr><td class="h"><a name="15"></a>15</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="16"></a>16</td><td></td><td></td><td></td><td></td><td class="s"> # insert attributes</td></tr>
<tr><td class="h"><a name="17"></a>17</td><td></td><td></td><td></td><td></td><td class="s"> my $hashref = $sdb-&gt;send_request('PutAttributes', {</td></tr>
<tr><td class="h"><a name="18"></a>18</td><td></td><td></td><td></td><td></td><td class="s">     DomainName             =&gt; 'my_things', </td></tr>
<tr><td class="h"><a name="19"></a>19</td><td></td><td></td><td></td><td></td><td class="s">     ItemName               =&gt; 'car',</td></tr>
<tr><td class="h"><a name="20"></a>20</td><td></td><td></td><td></td><td></td><td class="s">     'Attribute.1.Name'     =&gt; 'color',</td></tr>
<tr><td class="h"><a name="21"></a>21</td><td></td><td></td><td></td><td></td><td class="s">     'Attribute.1.Value'    =&gt; 'red',</td></tr>
<tr><td class="h"><a name="22"></a>22</td><td></td><td></td><td></td><td></td><td class="s">     'Attribute.1.Replace'  =&gt; 'true',</td></tr>
<tr><td class="h"><a name="23"></a>23</td><td></td><td></td><td></td><td></td><td class="s"> });</td></tr>
<tr><td class="h"><a name="24"></a>24</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="25"></a>25</td><td></td><td></td><td></td><td></td><td class="s"> # get attributes</td></tr>
<tr><td class="h"><a name="26"></a>26</td><td></td><td></td><td></td><td></td><td class="s"> my $hashref = $sdb-&gt;send_request('GetAttributes', {</td></tr>
<tr><td class="h"><a name="27"></a>27</td><td></td><td></td><td></td><td></td><td class="s">     DomainName             =&gt; 'my_things', </td></tr>
<tr><td class="h"><a name="28"></a>28</td><td></td><td></td><td></td><td></td><td class="s">     ItemName               =&gt; 'car',</td></tr>
<tr><td class="h"><a name="29"></a>29</td><td></td><td></td><td></td><td></td><td class="s"> });</td></tr>
<tr><td class="h"><a name="30"></a>30</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="31"></a>31</td><td></td><td></td><td></td><td></td><td class="s"> # search attributes</td></tr>
<tr><td class="h"><a name="32"></a>32</td><td></td><td></td><td></td><td></td><td class="s"> my $hashref = $sdb-&gt;send_request('Select', {</td></tr>
<tr><td class="h"><a name="33"></a>33</td><td></td><td></td><td></td><td></td><td class="s">     SelectExpression       =&gt; q{select * from my_things where color = 'red'},</td></tr>
<tr><td class="h"><a name="34"></a>34</td><td></td><td></td><td></td><td></td><td class="s"> });</td></tr>
<tr><td class="h"><a name="35"></a>35</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="36"></a>36</td><td></td><td></td><td></td><td></td><td class="s">=head1 DESCRIPTION</td></tr>
<tr><td class="h"><a name="37"></a>37</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="38"></a>38</td><td></td><td></td><td></td><td></td><td class="s">This class will let you quickly and easily inteface with AWS SimpleDB. It throws exceptions from L&lt;SimpleDB::Client::Exception&gt;. It's very light weight. Although we haven't run any benchmarks on the other modules, it should outperform any of the other Perl modules that exist today. </td></tr>
<tr><td class="h"><a name="39"></a>39</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="40"></a>40</td><td></td><td></td><td></td><td></td><td class="s">=head1 METHODS</td></tr>
<tr><td class="h"><a name="41"></a>41</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="42"></a>42</td><td></td><td></td><td></td><td></td><td class="s">The following methods are available from this class.</td></tr>
<tr><td class="h"><a name="43"></a>43</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="44"></a>44</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="45"></a>45</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="46"></a>46</td><td class="c3">3</td><td class="c0"><span title="Avg 44&micro;s">131&micro;s</span></td><td class="c3">2</td><td class="c0">353ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 350ms (1.86+348) within SimpleDB::Client::BEGIN@46 which was called
#    once (1.86ms+348ms) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#46">line 46</a></div></div>use Moose;<div class="calls"><div class="calls_out"># spent   350ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#46">SimpleDB::Client::BEGIN@46</a>
# spent  2.85ms making 1 call to <a href="Moose-Exporter-pm-line.html#312">Moose::Exporter::__ANON__[Moose/Exporter.pm:389]</a></div></div></td></tr>
<tr><td class="h"><a name="47"></a>47</td><td class="c3">3</td><td class="c0"><span title="Avg 57&micro;s">172&micro;s</span></td><td class="c3">2</td><td class="c0">11.8ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 11.7ms (10.6+1.10) within SimpleDB::Client::BEGIN@47 which was called
#    once (10.6ms+1.10ms) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#47">line 47</a></div></div>use Digest::SHA qw(hmac_sha256_base64);<div class="calls"><div class="calls_out"># spent  11.7ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#47">SimpleDB::Client::BEGIN@47</a>
# spent    97&micro;s making 1 call to <a href="Exporter-pm-line.html#31">Exporter::import</a></div></div></td></tr>
<tr><td class="h"><a name="48"></a>48</td><td class="c3">3</td><td class="c0"><span title="Avg 46&micro;s">139&micro;s</span></td><td class="c3">2</td><td class="c0">24.7ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 24.7ms (3.81+20.9) within SimpleDB::Client::BEGIN@48 which was called
#    once (3.81ms+20.9ms) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#48">line 48</a></div></div>use XML::Bare;<div class="calls"><div class="calls_out"># spent  24.7ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#48">SimpleDB::Client::BEGIN@48</a>
# spent    38&micro;s making 1 call to <a href="Exporter-pm-line.html#31">Exporter::import</a></div></div></td></tr>
<tr><td class="h"><a name="49"></a>49</td><td class="c3">3</td><td class="c0"><span title="Avg 56&micro;s">168&micro;s</span></td><td class="c3">1</td><td class="c0">83.5ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 83.5ms (4.71+78.8) within SimpleDB::Client::BEGIN@49 which was called
#    once (4.71ms+78.8ms) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#49">line 49</a></div></div>use LWP::UserAgent;<div class="calls"><div class="calls_out"># spent  83.5ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#49">SimpleDB::Client::BEGIN@49</a></div></div></td></tr>
<tr><td class="h"><a name="50"></a>50</td><td class="c3">3</td><td class="c1"><span title="Avg 8&micro;s">25&micro;s</span></td><td class="c3">1</td><td class="c3">8&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 8&micro;s within SimpleDB::Client::BEGIN@50 which was called
#    once (8&micro;s+0s) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#50">line 50</a></div></div>use HTTP::Request;<div class="calls"><div class="calls_out"># spent     8&micro;s making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#50">SimpleDB::Client::BEGIN@50</a></div></div></td></tr>
<tr><td class="h"><a name="51"></a>51</td><td class="c3">3</td><td class="c0"><span title="Avg 31&micro;s">92&micro;s</span></td><td class="c3">2</td><td class="c1">1.46ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 1.21ms (485&micro;s+727&micro;s) within SimpleDB::Client::BEGIN@51 which was called
#    once (485&micro;s+727&micro;s) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#51">line 51</a></div></div>use Time::HiRes qw(usleep);<div class="calls"><div class="calls_out"># spent  1.21ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#51">SimpleDB::Client::BEGIN@51</a>
# spent   248&micro;s making 1 call to <a href="Time-HiRes-pm-line.html#48">Time::HiRes::import</a></div></div></td></tr>
<tr><td class="h"><a name="52"></a>52</td><td class="c3">3</td><td class="c1"><span title="Avg 9&micro;s">27&micro;s</span></td><td class="c3">2</td><td class="c3">113&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 62&micro;s (12+50) within SimpleDB::Client::BEGIN@52 which was called
#    once (12&micro;s+50&micro;s) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#52">line 52</a></div></div>use URI::Escape qw(uri_escape_utf8);<div class="calls"><div class="calls_out"># spent    62&micro;s making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#52">SimpleDB::Client::BEGIN@52</a>
# spent    50&micro;s making 1 call to <a href="Exporter-pm-line.html#31">Exporter::import</a></div></div></td></tr>
<tr><td class="h"><a name="53"></a>53</td><td class="c3">3</td><td class="c0"><span title="Avg 46&micro;s">138&micro;s</span></td><td class="c3">1</td><td class="c0">18.9ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 18.9ms (171&micro;s+18.8) within SimpleDB::Client::BEGIN@53 which was called
#    once (171&micro;s+18.8ms) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#53">line 53</a></div></div>use SimpleDB::Client::Exception;<div class="calls"><div class="calls_out"># spent  18.9ms making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#53">SimpleDB::Client::BEGIN@53</a></div></div></td></tr>
<tr><td class="h"><a name="54"></a>54</td><td class="c3">3</td><td class="c0"><span title="Avg 235&micro;s">704&micro;s</span></td><td class="c3">1</td><td class="c3">9&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 9&micro;s within SimpleDB::Client::BEGIN@54 which was called
#    once (9&micro;s+0s) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#54">line 54</a></div></div>use URI;<div class="calls"><div class="calls_out"># spent     9&micro;s making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#54">SimpleDB::Client::BEGIN@54</a></div></div></td></tr>
<tr><td class="h"><a name="55"></a>55</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="56"></a>56</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="57"></a>57</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="58"></a>58</td><td></td><td></td><td></td><td></td><td class="s">=head2 new ( params ) </td></tr>
<tr><td class="h"><a name="59"></a>59</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="60"></a>60</td><td></td><td></td><td></td><td></td><td class="s">=head3 params</td></tr>
<tr><td class="h"><a name="61"></a>61</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="62"></a>62</td><td></td><td></td><td></td><td></td><td class="s">A hash containing the parameters to pass in to this method.</td></tr>
<tr><td class="h"><a name="63"></a>63</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="64"></a>64</td><td></td><td></td><td></td><td></td><td class="s">=head4 access_key</td></tr>
<tr><td class="h"><a name="65"></a>65</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="66"></a>66</td><td></td><td></td><td></td><td></td><td class="s">The access key given to you from Amazon when you sign up for the SimpleDB service at this URL: L&lt;http://aws.amazon.com/simpledb/&gt;</td></tr>
<tr><td class="h"><a name="67"></a>67</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="68"></a>68</td><td></td><td></td><td></td><td></td><td class="s">=head4 secret_key</td></tr>
<tr><td class="h"><a name="69"></a>69</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="70"></a>70</td><td></td><td></td><td></td><td></td><td class="s">The secret access key given to you from Amazon.</td></tr>
<tr><td class="h"><a name="71"></a>71</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="72"></a>72</td><td></td><td></td><td></td><td></td><td class="s">=head4 simpledb_uri</td></tr>
<tr><td class="h"><a name="73"></a>73</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="74"></a>74</td><td></td><td></td><td></td><td></td><td class="s">The constructor that SimpleDB::Client will connect to.  Defaults to: </td></tr>
<tr><td class="h"><a name="75"></a>75</td><td></td><td></td><td></td><td></td><td class="s">   </td></tr>
<tr><td class="h"><a name="76"></a>76</td><td></td><td></td><td></td><td></td><td class="s"> URI-&gt;new('https://sdb.amazonaws.com/')</td></tr>
<tr><td class="h"><a name="77"></a>77</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="78"></a>78</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="79"></a>79</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="80"></a>80</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="81"></a>81</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="82"></a>82</td><td></td><td></td><td></td><td></td><td class="s">=head2 access_key ( )</td></tr>
<tr><td class="h"><a name="83"></a>83</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="84"></a>84</td><td></td><td></td><td></td><td></td><td class="s">Returns the access key passed to the constructor.</td></tr>
<tr><td class="h"><a name="85"></a>85</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="86"></a>86</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="87"></a>87</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="88"></a>88</td><td class="c3">1</td><td class="c3"><span title="Avg 3&micro;s">3&micro;s</span></td><td class="c3">1</td><td class="c0">2.32ms</td><td class="s">has 'access_key' =&gt; (<div class="calls"><div class="calls_out"># spent  2.32ms making 1 call to <a href="Moose-pm-line.html#60">Moose::has</a></div></div></td></tr>
<tr><td class="h"><a name="89"></a>89</td><td></td><td></td><td></td><td></td><td class="s">    is              =&gt; 'ro',</td></tr>
<tr><td class="h"><a name="90"></a>90</td><td></td><td></td><td></td><td></td><td class="s">    required        =&gt; 1,</td></tr>
<tr><td class="h"><a name="91"></a>91</td><td></td><td></td><td></td><td></td><td class="s">    documentation   =&gt; 'The AWS SimpleDB access key id provided by Amazon.',</td></tr>
<tr><td class="h"><a name="92"></a>92</td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h"><a name="93"></a>93</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="94"></a>94</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="95"></a>95</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="96"></a>96</td><td></td><td></td><td></td><td></td><td class="s">=head2 secret_key ( )</td></tr>
<tr><td class="h"><a name="97"></a>97</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="98"></a>98</td><td></td><td></td><td></td><td></td><td class="s">Returns the secret key passed to the constructor.</td></tr>
<tr><td class="h"><a name="99"></a>99</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="100"></a>100</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="101"></a>101</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="102"></a>102</td><td class="c3">1</td><td class="c3"><span title="Avg 2&micro;s">2&micro;s</span></td><td class="c3">1</td><td class="c2">1.07ms</td><td class="s">has 'secret_key' =&gt; (<div class="calls"><div class="calls_out"># spent  1.07ms making 1 call to <a href="Moose-pm-line.html#60">Moose::has</a></div></div></td></tr>
<tr><td class="h"><a name="103"></a>103</td><td></td><td></td><td></td><td></td><td class="s">    is              =&gt; 'ro',</td></tr>
<tr><td class="h"><a name="104"></a>104</td><td></td><td></td><td></td><td></td><td class="s">    required        =&gt; 1,</td></tr>
<tr><td class="h"><a name="105"></a>105</td><td></td><td></td><td></td><td></td><td class="s">    documentation   =&gt; 'The AWS SimpleDB secret access key id provided by Amazon.',</td></tr>
<tr><td class="h"><a name="106"></a>106</td><td></td><td></td><td></td><td></td><td class="s">);</td></tr>
<tr><td class="h"><a name="107"></a>107</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="108"></a>108</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="109"></a>109</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="110"></a>110</td><td></td><td></td><td></td><td></td><td class="s">=head2 simpledb_uri ( )</td></tr>
<tr><td class="h"><a name="111"></a>111</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="112"></a>112</td><td></td><td></td><td></td><td></td><td class="s">Returns the L&lt;URI&gt; object passed into the constructor that SimpleDB::Client will connect to.  Defaults to: </td></tr>
<tr><td class="h"><a name="113"></a>113</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="114"></a>114</td><td></td><td></td><td></td><td></td><td class="s"> URI-&gt;new('https://sdb.amazonaws.com/')</td></tr>
<tr><td class="h"><a name="115"></a>115</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="116"></a>116</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="117"></a>117</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="118"></a>118</td><td></td><td></td><td></td><td></td><td class="s">has simpledb_uri =&gt; (</td></tr>
<tr><td class="h"><a name="119"></a>119</td><td></td><td></td><td></td><td></td><td class="s">    is      =&gt; 'ro',</td></tr>
<tr><td class="h"><a name="120"></a>120</td><td class="c3">1</td><td class="c3"><span title="Avg 7&micro;s">7&micro;s</span></td><td class="c3">1</td><td class="c0">5.55ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 5.56ms (7&micro;s+5.55) within SimpleDB::Client::__ANON__[../lib/SimpleDB/Client.pm:120] which was called
#    once (7&micro;s+5.55ms) by Class::MOP::Mixin::AttributeCore::default at <a href="Class-MOP-Mixin-AttributeCore-pm-line.html#53">line 53 of Class/MOP/Mixin/AttributeCore.pm</a></div></div>    default =&gt; sub { URI-&gt;new('http://sdb.amazonaws.com/') },<div class="calls"><div class="calls_out">    # spent  5.55ms making 1 call to <a href="URI-pm-line.html#36">URI::new</a></div></div></td></tr>
<tr><td class="h"><a name="121"></a>121</td><td class="c3">1</td><td class="c3"><span title="Avg 4&micro;s">4&micro;s</span></td><td class="c3">1</td><td class="c2">908&micro;s</td><td class="s">);<div class="calls"><div class="calls_out"># spent   908&micro;s making 1 call to <a href="Moose-pm-line.html#60">Moose::has</a></div></div></td></tr>
<tr><td class="h"><a name="122"></a>122</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="123"></a>123</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="124"></a>124</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="125"></a>125</td><td></td><td></td><td></td><td></td><td class="s">=head2 user_agent ( )</td></tr>
<tr><td class="h"><a name="126"></a>126</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="127"></a>127</td><td></td><td></td><td></td><td></td><td class="s">Returns the L&lt;LWP::UserAgent&gt; object that is used to connect to SimpleDB. It's cached here so it doesn't have to be created each time. </td></tr>
<tr><td class="h"><a name="128"></a>128</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="129"></a>129</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="130"></a>130</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="131"></a>131</td><td></td><td></td><td></td><td></td><td class="s">has user_agent =&gt; (</td></tr>
<tr><td class="h"><a name="132"></a>132</td><td></td><td></td><td></td><td></td><td class="s">    is      =&gt; 'ro',</td></tr>
<tr><td class="h"><a name="133"></a>133</td><td class="c3">1</td><td class="c3"><span title="Avg 10&micro;s">10&micro;s</span></td><td class="c3">1</td><td class="c0">8.98ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 8.99ms (9&micro;s+8.98) within SimpleDB::Client::__ANON__[../lib/SimpleDB/Client.pm:133] which was called
#    once (9&micro;s+8.98ms) by Class::MOP::Mixin::AttributeCore::default at <a href="Class-MOP-Mixin-AttributeCore-pm-line.html#53">line 53 of Class/MOP/Mixin/AttributeCore.pm</a></div></div>    default =&gt; sub { LWP::UserAgent-&gt;new(timeout=&gt;30, keep_alive=&gt;1); },<div class="calls"><div class="calls_out">    # spent  8.98ms making 1 call to <a href="LWP-UserAgent-pm-line.html#31">LWP::UserAgent::new</a></div></div></td></tr>
<tr><td class="h"><a name="134"></a>134</td><td class="c3">1</td><td class="c3"><span title="Avg 3&micro;s">3&micro;s</span></td><td class="c3">1</td><td class="c2">861&micro;s</td><td class="s">);<div class="calls"><div class="calls_out"># spent   861&micro;s making 1 call to <a href="Moose-pm-line.html#60">Moose::has</a></div></div></td></tr>
<tr><td class="h"><a name="135"></a>135</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="136"></a>136</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="137"></a>137</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="138"></a>138</td><td></td><td></td><td></td><td></td><td class="s">=head2 construct_request ( action, [ params ] )</td></tr>
<tr><td class="h"><a name="139"></a>139</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="140"></a>140</td><td></td><td></td><td></td><td></td><td class="s">Returns a string that contains the HTTP post data ready to make a request to SimpleDB. Normally this is only called by send_request(), but if you want to debug a SimpleDB interaction, then having access to this method is critical.</td></tr>
<tr><td class="h"><a name="141"></a>141</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="142"></a>142</td><td></td><td></td><td></td><td></td><td class="s">=head3 action</td></tr>
<tr><td class="h"><a name="143"></a>143</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="144"></a>144</td><td></td><td></td><td></td><td></td><td class="s">The action to perform on SimpleDB. See the &quot;Operations&quot; section of the guide located at L&lt;http://docs.amazonwebservices.com/AmazonSimpleDB/2009-04-15/DeveloperGuide/&gt;.</td></tr>
<tr><td class="h"><a name="145"></a>145</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="146"></a>146</td><td></td><td></td><td></td><td></td><td class="s">=head3 params</td></tr>
<tr><td class="h"><a name="147"></a>147</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="148"></a>148</td><td></td><td></td><td></td><td></td><td class="s">Any extra prameters required by the operation. The normal parameters of Action, AWSAccessKeyId, Version, Timestamp, SignatureMethod, SignatureVersion, and Signature are all automatically provided by this method.</td></tr>
<tr><td class="h"><a name="149"></a>149</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="150"></a>150</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="151"></a>151</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="152"></a>152</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 2.29ms (418&micro;s+1.88) within SimpleDB::Client::construct_request which was called 3 times, avg 764&micro;s/call:
# 3 times (418&micro;s+1.88ms) by SimpleDB::Client::send_request at <a href="lib-SimpleDB-Client-pm-line.html#203">line 203</a>, avg 764&micro;s/call</div></div>sub construct_request {</td></tr>
<tr><td class="h"><a name="153"></a>153</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">4&micro;s</span></td><td></td><td></td><td class="s">    my ($self, $action, $params) = @_;</td></tr>
<tr><td class="h"><a name="154"></a>154</td><td class="c3">3</td><td class="c3"><span title="Avg 667ns">2&micro;s</span></td><td></td><td></td><td class="s">    my $encoding_pattern = &quot;^A-Za-z0-9\-_.~&quot;;</td></tr>
<tr><td class="h"><a name="155"></a>155</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="156"></a>156</td><td></td><td></td><td></td><td></td><td class="s">    # add required parameters</td></tr>
<tr><td class="h"><a name="157"></a>157</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">4&micro;s</span></td><td></td><td></td><td class="s">    $params-&gt;{'Action'}           = $action;</td></tr>
<tr><td class="h"><a name="158"></a>158</td><td class="c3">3</td><td class="c3"><span title="Avg 4&micro;s">10&micro;s</span></td><td class="c3">3</td><td class="c3">12&micro;s</td><td class="s">    $params-&gt;{'AWSAccessKeyId'}   = $self-&gt;access_key;<div class="calls"><div class="calls_out">    # spent    12&micro;s making 3 calls to <a >SimpleDB::Client::access_key</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="159"></a>159</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">3&micro;s</span></td><td></td><td></td><td class="s">    $params-&gt;{'Version'}          = '2009-04-15';</td></tr>
<tr><td class="h"><a name="160"></a>160</td><td class="c0">6</td><td class="c0"><span title="Avg 13&micro;s">75&micro;s</span></td><td class="c3">3</td><td class="c3">13&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 13&micro;s within SimpleDB::Client::__ANON__[../lib/SimpleDB/Client.pm:160] which was called 3 times, avg 4&micro;s/call:
# 3 times (13&micro;s+0s) by SimpleDB::Client::construct_request at <a href="lib-SimpleDB-Client-pm-line.html#160">line 160</a>, avg 4&micro;s/call</div></div>    $params-&gt;{'Timestamp'}        = sprintf(&quot;%04d-%02d-%02dT%02d:%02d:%02d.000Z&quot;, sub { ($_[5]+1900, $_[4]+1, $_[3], $_[2], $_[1], $_[0]) }-&gt;(gmtime(time)));<div class="calls"><div class="calls_out">    # spent    13&micro;s making 3 calls to <a href="lib-SimpleDB-Client-pm-line.html#160">SimpleDB::Client::__ANON__[../lib/SimpleDB/Client.pm:160]</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="161"></a>161</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">4&micro;s</span></td><td></td><td></td><td class="s">    $params-&gt;{'SignatureMethod'}  = 'HmacSHA256';</td></tr>
<tr><td class="h"><a name="162"></a>162</td><td class="c3">3</td><td class="c3"><span title="Avg 800ns">2&micro;s</span></td><td></td><td></td><td class="s">    $params-&gt;{'SignatureVersion'} = 2;</td></tr>
<tr><td class="h"><a name="163"></a>163</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="164"></a>164</td><td></td><td></td><td></td><td></td><td class="s">    # construct post data</td></tr>
<tr><td class="h"><a name="165"></a>165</td><td class="c3">3</td><td class="c3"><span title="Avg 233ns">700ns</span></td><td></td><td></td><td class="s">    my $post_data;</td></tr>
<tr><td class="h"><a name="166"></a>166</td><td class="c3">3</td><td class="c0"><span title="Avg 12&micro;s">37&micro;s</span></td><td class="c3">3</td><td class="c3">13&micro;s</td><td class="s">    foreach my $name (sort {$a cmp $b} keys %{$params}) {<div class="calls"><div class="calls_out">    # spent    13&micro;s making 3 calls to <a href="lib-SimpleDB-Client-pm-line.html#SimpleDB__Client__CORE_sort">SimpleDB::Client::CORE:sort</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="167"></a>167</td><td class="c0">20</td><td class="c0"><span title="Avg 3&micro;s">61&micro;s</span></td><td class="c0">20</td><td class="c3">576&micro;s</td><td class="s">        $post_data .= $name . '=' . uri_escape_utf8($params-&gt;{$name}, $encoding_pattern) . '&amp;';<div class="calls"><div class="calls_out">        # spent   576&micro;s making 20 calls to <a href="URI-Escape-pm-line.html#184">URI::Escape::uri_escape_utf8</a>, avg 29&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="168"></a>168</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="169"></a>169</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">3&micro;s</span></td><td></td><td></td><td class="s">    chop $post_data;</td></tr>
<tr><td class="h"><a name="170"></a>170</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="171"></a>171</td><td></td><td></td><td></td><td></td><td class="s">    # sign the post data</td></tr>
<tr><td class="h"><a name="172"></a>172</td><td class="c3">3</td><td class="c1"><span title="Avg 9&micro;s">26&micro;s</span></td><td class="c0">6</td><td class="c3">160&micro;s</td><td class="s">    my $signature = &quot;POST\n&quot;.$self-&gt;simpledb_uri-&gt;host.&quot;\n/\n&quot;. $post_data;<div class="calls"><div class="calls_out">    # spent   148&micro;s making 3 calls to <a href="URI-_server-pm-line.html#65">URI::_server::host</a>, avg 49&micro;s/call
    # spent    13&micro;s making 3 calls to <a >SimpleDB::Client::simpledb_uri</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="173"></a>173</td><td class="c3">3</td><td class="c0"><span title="Avg 38&micro;s">114&micro;s</span></td><td class="c0">6</td><td class="c3">102&micro;s</td><td class="s">    $signature = hmac_sha256_base64($signature, $self-&gt;secret_key) . '=';<div class="calls"><div class="calls_out">    # spent    89&micro;s making 3 calls to <a href="Digest-SHA-pm-line.html#Digest__SHA__hmac_sha256_base64">Digest::SHA::hmac_sha256_base64</a>, avg 30&micro;s/call
    # spent    13&micro;s making 3 calls to <a >SimpleDB::Client::secret_key</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="174"></a>174</td><td class="c3">3</td><td class="c3"><span title="Avg 3&micro;s">8&micro;s</span></td><td class="c3">3</td><td class="c3">94&micro;s</td><td class="s">    $post_data .= '&amp;Signature=' . uri_escape_utf8($signature, $encoding_pattern);<div class="calls"><div class="calls_out">    # spent    94&micro;s making 3 calls to <a href="URI-Escape-pm-line.html#184">URI::Escape::uri_escape_utf8</a>, avg 31&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="175"></a>175</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="176"></a>176</td><td class="c3">3</td><td class="c0"><span title="Avg 12&micro;s">35&micro;s</span></td><td class="c0">9</td><td class="c3">742&micro;s</td><td class="s">    my $request = HTTP::Request-&gt;new('POST', $self-&gt;simpledb_uri-&gt;as_string);<div class="calls"><div class="calls_out">    # spent   724&micro;s making 3 calls to <a href="HTTP-Request-pm-line.html#12">HTTP::Request::new</a>, avg 241&micro;s/call
    # spent    12&micro;s making 3 calls to <a href="URI-pm-line.html#253">URI::as_string</a>, avg 4&micro;s/call
    # spent     7&micro;s making 3 calls to <a >SimpleDB::Client::simpledb_uri</a>, avg 2&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="177"></a>177</td><td class="c3">3</td><td class="c2"><span title="Avg 6&micro;s">17&micro;s</span></td><td class="c3">3</td><td class="c3">49&micro;s</td><td class="s">    $request-&gt;content_type(&quot;application/x-www-form-urlencoded; charset=utf-8&quot;);<div class="calls"><div class="calls_out">    # spent    28&micro;s making 2 calls to <a href="HTTP-Message-pm-line.html#622">HTTP::Message::__ANON__[HTTP/Message.pm:622]</a>, avg 14&micro;s/call
    # spent    20&micro;s making 1 call to <a href="HTTP-Message-pm-line.html#616">HTTP::Message::AUTOLOAD</a></div></div></td></tr>
<tr><td class="h"><a name="178"></a>178</td><td class="c3">3</td><td class="c3"><span title="Avg 3&micro;s">10&micro;s</span></td><td class="c3">3</td><td class="c3">83&micro;s</td><td class="s">    $request-&gt;content($post_data);<div class="calls"><div class="calls_out">    # spent    83&micro;s making 3 calls to <a href="HTTP-Message-pm-line.html#114">HTTP::Message::content</a>, avg 28&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="179"></a>179</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="180"></a>180</td><td class="c3">3</td><td class="c3"><span title="Avg 5&micro;s">15&micro;s</span></td><td></td><td></td><td class="s">    return $request;</td></tr>
<tr><td class="h"><a name="181"></a>181</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="182"></a>182</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="183"></a>183</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="184"></a>184</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="185"></a>185</td><td></td><td></td><td></td><td></td><td class="s">=head2 send_request ( action, [ params ] )</td></tr>
<tr><td class="h"><a name="186"></a>186</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="187"></a>187</td><td></td><td></td><td></td><td></td><td class="s">Creates a request, and then sends it to SimpleDB. The response is returned as a hash reference of the raw XML document returned by SimpleDB. Automatically attempts 5 cascading retries on connection failure.</td></tr>
<tr><td class="h"><a name="188"></a>188</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="189"></a>189</td><td></td><td></td><td></td><td></td><td class="s">Throws SimpleDB::Client::Exception::Response and SimpleDB::Client::Exception::Connection.</td></tr>
<tr><td class="h"><a name="190"></a>190</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="191"></a>191</td><td></td><td></td><td></td><td></td><td class="s">=head3 action</td></tr>
<tr><td class="h"><a name="192"></a>192</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="193"></a>193</td><td></td><td></td><td></td><td></td><td class="s">See create_request() for details.</td></tr>
<tr><td class="h"><a name="194"></a>194</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="195"></a>195</td><td></td><td></td><td></td><td></td><td class="s">=head3 params</td></tr>
<tr><td class="h"><a name="196"></a>196</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="197"></a>197</td><td></td><td></td><td></td><td></td><td class="s">See create_request() for details.</td></tr>
<tr><td class="h"><a name="198"></a>198</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="199"></a>199</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="200"></a>200</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="201"></a>201</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 367ms (264&micro;s+367) within SimpleDB::Client::send_request which was called 3 times, avg 122ms/call:
#    once (191&micro;s+204ms) by main::RUNTIME at <a href="01-HTTP-t-line.html#15">line 15 of 01.HTTP.t</a>
#    once (37&micro;s+103ms) by main::RUNTIME at <a href="01-HTTP-t-line.html#25">line 25 of 01.HTTP.t</a>
#    once (36&micro;s+59.8ms) by main::RUNTIME at <a href="01-HTTP-t-line.html#17">line 17 of 01.HTTP.t</a></div></div>sub send_request {</td></tr>
<tr><td class="h"><a name="202"></a>202</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">4&micro;s</span></td><td></td><td></td><td class="s">    my ($self, $action, $params) = @_;</td></tr>
<tr><td class="h"><a name="203"></a>203</td><td class="c3">3</td><td class="c3"><span title="Avg 3&micro;s">9&micro;s</span></td><td class="c3">3</td><td class="c0">2.29ms</td><td class="s">    my $request = $self-&gt;construct_request($action, $params);<div class="calls"><div class="calls_out">    # spent  2.29ms making 3 calls to <a href="lib-SimpleDB-Client-pm-line.html#152">SimpleDB::Client::construct_request</a>, avg 764&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="204"></a>204</td><td></td><td></td><td></td><td></td><td class="s">    # loop til we get a response or throw an exception</td></tr>
<tr><td class="h"><a name="205"></a>205</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">4&micro;s</span></td><td></td><td></td><td class="s">    foreach my $retry (1..5) { </td></tr>
<tr><td class="h"><a name="206"></a>206</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="207"></a>207</td><td></td><td></td><td></td><td></td><td class="s">        # make the request</td></tr>
<tr><td class="h"><a name="208"></a>208</td><td class="c3">3</td><td class="c3"><span title="Avg 4&micro;s">11&micro;s</span></td><td class="c3">3</td><td class="c3">13&micro;s</td><td class="s">        my $ua = $self-&gt;user_agent;<div class="calls"><div class="calls_out">        # spent    13&micro;s making 3 calls to <a >SimpleDB::Client::user_agent</a>, avg 4&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="209"></a>209</td><td class="c3">3</td><td class="c3"><span title="Avg 3&micro;s">9&micro;s</span></td><td class="c3">3</td><td class="c0">364ms</td><td class="s">        my $response = $ua-&gt;request($request);<div class="calls"><div class="calls_out">        # spent   364ms making 3 calls to <a href="LWP-UserAgent-pm-line.html#258">LWP::UserAgent::request</a>, avg 121ms/call</div></div></td></tr>
<tr><td class="h"><a name="210"></a>210</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="211"></a>211</td><td></td><td></td><td></td><td></td><td class="s">        # got a possibly recoverable error, let's retry</td></tr>
<tr><td class="h"><a name="212"></a>212</td><td class="c3">3</td><td class="c3"><span title="Avg 3&micro;s">10&micro;s</span></td><td class="c3">3</td><td class="c3">20&micro;s</td><td class="s">        if ($response-&gt;code &gt;= 500 &amp;&amp; $response-&gt;code &lt; 600) {<div class="calls"><div class="calls_out">        # spent    20&micro;s making 3 calls to <a href="HTTP-Response-pm-line.html#61">HTTP::Response::code</a>, avg 7&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="213"></a>213</td><td></td><td></td><td></td><td></td><td class="s">            if ($retry &lt; 5) {</td></tr>
<tr><td class="h"><a name="214"></a>214</td><td></td><td></td><td></td><td></td><td class="s">                usleep((4 ** $retry) * 100_000);</td></tr>
<tr><td class="h"><a name="215"></a>215</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="216"></a>216</td><td></td><td></td><td></td><td></td><td class="s">            else {</td></tr>
<tr><td class="h"><a name="217"></a>217</td><td></td><td></td><td></td><td></td><td class="s">                warn $response-&gt;header('Reason');</td></tr>
<tr><td class="h"><a name="218"></a>218</td><td></td><td></td><td></td><td></td><td class="s">                SimpleDB::Client::Exception::Connection-&gt;throw(error=&gt;'Exceeded maximum retries.', status_code=&gt;$response-&gt;code);</td></tr>
<tr><td class="h"><a name="219"></a>219</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="220"></a>220</td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
<tr><td class="h"><a name="221"></a>221</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="222"></a>222</td><td></td><td></td><td></td><td></td><td class="s">        # not a retry</td></tr>
<tr><td class="h"><a name="223"></a>223</td><td></td><td></td><td></td><td></td><td class="s">        else {</td></tr>
<tr><td class="h"><a name="224"></a>224</td><td class="c3">3</td><td class="c0"><span title="Avg 68&micro;s">205&micro;s</span></td><td class="c3">3</td><td class="c3">550&micro;s</td><td class="s">            return $self-&gt;handle_response($response);<div class="calls"><div class="calls_out">            # spent   550&micro;s making 3 calls to <a href="lib-SimpleDB-Client-pm-line.html#243">SimpleDB::Client::handle_response</a>, avg 183&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="225"></a>225</td><td></td><td></td><td></td><td></td><td class="s">        }</td></tr>
<tr><td class="h"><a name="226"></a>226</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="227"></a>227</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="228"></a>228</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="229"></a>229</td><td></td><td></td><td></td><td></td><td class="s">#--------------------------------------------------------</td></tr>
<tr><td class="h"><a name="230"></a>230</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="231"></a>231</td><td></td><td></td><td></td><td></td><td class="s">=head2 handle_response ( response ) </td></tr>
<tr><td class="h"><a name="232"></a>232</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="233"></a>233</td><td></td><td></td><td></td><td></td><td class="s">Returns a hashref containing the response from SimpleDB.</td></tr>
<tr><td class="h"><a name="234"></a>234</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="235"></a>235</td><td></td><td></td><td></td><td></td><td class="s">Throws SimpleDB::Client::Exception::Response.</td></tr>
<tr><td class="h"><a name="236"></a>236</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="237"></a>237</td><td></td><td></td><td></td><td></td><td class="s">=head3 response</td></tr>
<tr><td class="h"><a name="238"></a>238</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="239"></a>239</td><td></td><td></td><td></td><td></td><td class="s">The L&lt;HTTP::Response&gt; object created by the C&lt;send_request&gt; method.</td></tr>
<tr><td class="h"><a name="240"></a>240</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="241"></a>241</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="242"></a>242</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="243"></a>243</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 550&micro;s (67+483) within SimpleDB::Client::handle_response which was called 3 times, avg 183&micro;s/call:
# 3 times (67&micro;s+483&micro;s) by SimpleDB::Client::send_request at <a href="lib-SimpleDB-Client-pm-line.html#224">line 224</a>, avg 183&micro;s/call</div></div>sub handle_response {</td></tr>
<tr><td class="h"><a name="244"></a>244</td><td class="c3">3</td><td class="c3"><span title="Avg 1&micro;s">3&micro;s</span></td><td></td><td></td><td class="s">    my ($self, $response) = @_;</td></tr>
<tr><td class="h"><a name="245"></a>245</td><td class="c0">6</td><td class="c0"><span title="Avg 7&micro;s">43&micro;s</span></td><td class="c0">9</td><td class="c3">464&micro;s</td><td class="s">    my $content = eval {XML::Bare::xmlin($response-&gt;content)};<div class="calls"><div class="calls_out">    # spent   424&micro;s making 3 calls to <a href="XML-Bare-pm-line.html#122">XML::Bare::xmlin</a>, avg 142&micro;s/call
    # spent    24&micro;s making 3 calls to <a href="HTTP-Message-pm-line.html#114">HTTP::Message::content</a>, avg 8&micro;s/call
    # spent    16&micro;s making 3 calls to <a href="XML-Bare-pm-line.html#60">XML::Bare::DESTROY</a>, avg 5&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="246"></a>246</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="247"></a>247</td><td></td><td></td><td></td><td></td><td class="s">    # choked reconstituing the XML, probably because it wasn't XML</td></tr>
<tr><td class="h"><a name="248"></a>248</td><td class="c3">3</td><td class="c1"><span title="Avg 7&micro;s">22&micro;s</span></td><td class="c3">3</td><td class="c3">35&micro;s</td><td class="s">    if ($@) {<div class="calls"><div class="calls_out">    # spent    35&micro;s making 3 calls to <a href="HTTP-Response-pm-line.html#215">HTTP::Response::is_success</a>, avg 12&micro;s/call</div></div></td></tr>
<tr><td class="h"><a name="249"></a>249</td><td></td><td></td><td></td><td></td><td class="s">        SimpleDB::Client::Exception::Response-&gt;throw(</td></tr>
<tr><td class="h"><a name="250"></a>250</td><td></td><td></td><td></td><td></td><td class="s">            error       =&gt; 'Response was garbage. Confirm Net::SSLeay, XML::Parser, and XML::Simple installations.', </td></tr>
<tr><td class="h"><a name="251"></a>251</td><td></td><td></td><td></td><td></td><td class="s">            status_code =&gt; $response-&gt;code,</td></tr>
<tr><td class="h"><a name="252"></a>252</td><td></td><td></td><td></td><td></td><td class="s">            response    =&gt; $response,</td></tr>
<tr><td class="h"><a name="253"></a>253</td><td></td><td></td><td></td><td></td><td class="s">        );</td></tr>
<tr><td class="h"><a name="254"></a>254</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="255"></a>255</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="256"></a>256</td><td></td><td></td><td></td><td></td><td class="s">    # got a valid response</td></tr>
<tr><td class="h"><a name="257"></a>257</td><td></td><td></td><td></td><td></td><td class="s">    elsif ($response-&gt;is_success) {</td></tr>
<tr><td class="h"><a name="258"></a>258</td><td></td><td></td><td></td><td></td><td class="s">        return $content;</td></tr>
<tr><td class="h"><a name="259"></a>259</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="260"></a>260</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="261"></a>261</td><td></td><td></td><td></td><td></td><td class="s">    # SimpleDB gave us an error message</td></tr>
<tr><td class="h"><a name="262"></a>262</td><td></td><td></td><td></td><td></td><td class="s">    else {</td></tr>
<tr><td class="h"><a name="263"></a>263</td><td></td><td></td><td></td><td></td><td class="s">        SimpleDB::Client::Exception::Response-&gt;throw(</td></tr>
<tr><td class="h"><a name="264"></a>264</td><td></td><td></td><td></td><td></td><td class="s">            error       =&gt; $content-&gt;{Errors}{Error}{Message},</td></tr>
<tr><td class="h"><a name="265"></a>265</td><td></td><td></td><td></td><td></td><td class="s">            status_code =&gt; $response-&gt;code,</td></tr>
<tr><td class="h"><a name="266"></a>266</td><td></td><td></td><td></td><td></td><td class="s">            error_code  =&gt; $content-&gt;{Errors}{Error}{Code},</td></tr>
<tr><td class="h"><a name="267"></a>267</td><td></td><td></td><td></td><td></td><td class="s">            box_usage   =&gt; $content-&gt;{Errors}{Error}{BoxUsage},</td></tr>
<tr><td class="h"><a name="268"></a>268</td><td></td><td></td><td></td><td></td><td class="s">            request_id  =&gt; $content-&gt;{RequestID},</td></tr>
<tr><td class="h"><a name="269"></a>269</td><td></td><td></td><td></td><td></td><td class="s">            response    =&gt; $response,</td></tr>
<tr><td class="h"><a name="270"></a>270</td><td></td><td></td><td></td><td></td><td class="s">        );</td></tr>
<tr><td class="h"><a name="271"></a>271</td><td></td><td></td><td></td><td></td><td class="s">    }</td></tr>
<tr><td class="h"><a name="272"></a>272</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="273"></a>273</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="274"></a>274</td><td></td><td></td><td></td><td></td><td class="s">=head1 PREREQS</td></tr>
<tr><td class="h"><a name="275"></a>275</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="276"></a>276</td><td></td><td></td><td></td><td></td><td class="s">This package requires the following modules:</td></tr>
<tr><td class="h"><a name="277"></a>277</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="278"></a>278</td><td></td><td></td><td></td><td></td><td class="s">L&lt;XML::Simple&gt;</td></tr>
<tr><td class="h"><a name="279"></a>279</td><td></td><td></td><td></td><td></td><td class="s">L&lt;LWP&gt;</td></tr>
<tr><td class="h"><a name="280"></a>280</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Time::HiRes&gt;</td></tr>
<tr><td class="h"><a name="281"></a>281</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Crypt::SSLeay&gt;</td></tr>
<tr><td class="h"><a name="282"></a>282</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Moose&gt;</td></tr>
<tr><td class="h"><a name="283"></a>283</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Digest::SHA&gt;</td></tr>
<tr><td class="h"><a name="284"></a>284</td><td></td><td></td><td></td><td></td><td class="s">L&lt;URI&gt;</td></tr>
<tr><td class="h"><a name="285"></a>285</td><td></td><td></td><td></td><td></td><td class="s">L&lt;Exception::Class&gt;</td></tr>
<tr><td class="h"><a name="286"></a>286</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="287"></a>287</td><td></td><td></td><td></td><td></td><td class="s">=head1 SUPPORT</td></tr>
<tr><td class="h"><a name="288"></a>288</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="289"></a>289</td><td></td><td></td><td></td><td></td><td class="s">=over</td></tr>
<tr><td class="h"><a name="290"></a>290</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="291"></a>291</td><td></td><td></td><td></td><td></td><td class="s">=item Repository</td></tr>
<tr><td class="h"><a name="292"></a>292</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="293"></a>293</td><td></td><td></td><td></td><td></td><td class="s">L&lt;http://github.com/rizen/SimpleDB-Client&gt;</td></tr>
<tr><td class="h"><a name="294"></a>294</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="295"></a>295</td><td></td><td></td><td></td><td></td><td class="s">=item Bug Reports</td></tr>
<tr><td class="h"><a name="296"></a>296</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="297"></a>297</td><td></td><td></td><td></td><td></td><td class="s">L&lt;http://rt.cpan.org/Public/Dist/Display.html?Name=SimpleDB-Client&gt;</td></tr>
<tr><td class="h"><a name="298"></a>298</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="299"></a>299</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
<tr><td class="h"><a name="300"></a>300</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="301"></a>301</td><td></td><td></td><td></td><td></td><td class="s">=head1 SEE ALSO</td></tr>
<tr><td class="h"><a name="302"></a>302</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="303"></a>303</td><td></td><td></td><td></td><td></td><td class="s">There are other packages you can use to access SimpleDB. I chose not to use them because I wanted something a bit more lightweight that I could build L&lt;SimpleDB::Class&gt; on top of so I could easily map objects to SimpleDB Domain Items. If you're looking for a low level SimpleDB accessor and for some reason this module doesn't cut the mustard, then you should check out these:</td></tr>
<tr><td class="h"><a name="304"></a>304</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="305"></a>305</td><td></td><td></td><td></td><td></td><td class="s">=over</td></tr>
<tr><td class="h"><a name="306"></a>306</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="307"></a>307</td><td></td><td></td><td></td><td></td><td class="s">=item Amazon::SimpleDB (L&lt;http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1136&gt;)</td></tr>
<tr><td class="h"><a name="308"></a>308</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="309"></a>309</td><td></td><td></td><td></td><td></td><td class="s">A complete and nicely functional low level library made by Amazon itself.</td></tr>
<tr><td class="h"><a name="310"></a>310</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="311"></a>311</td><td></td><td></td><td></td><td></td><td class="s">=item L&lt;Amazon::SimpleDB&gt;</td></tr>
<tr><td class="h"><a name="312"></a>312</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="313"></a>313</td><td></td><td></td><td></td><td></td><td class="s">A low level SimpleDB accessor that's in its infancy and may be abandoned, but appears to be pretty functional, and of the same scope as Amazon's own module.</td></tr>
<tr><td class="h"><a name="314"></a>314</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="315"></a>315</td><td></td><td></td><td></td><td></td><td class="s">=back</td></tr>
<tr><td class="h"><a name="316"></a>316</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="317"></a>317</td><td></td><td></td><td></td><td></td><td class="s">In addition to clients, there is at least one other API compatible server out there that basically lets you host your own SimpleDB if you don't want to put it in Amazon's cloud. It's called M/DB. You can read more about it here: L&lt;http://gradvs1.mgateway.com/main/index.html?path=mdb&gt;. Though I haven't tested it, since it's API compatible, you should be able to use it with both this module and L&lt;SimpleDB::Class&gt;.</td></tr>
<tr><td class="h"><a name="318"></a>318</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="319"></a>319</td><td></td><td></td><td></td><td></td><td class="s">=head1 AUTHOR</td></tr>
<tr><td class="h"><a name="320"></a>320</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="321"></a>321</td><td></td><td></td><td></td><td></td><td class="s">JT Smith &lt;jt_at_plainblack_com&gt;</td></tr>
<tr><td class="h"><a name="322"></a>322</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="323"></a>323</td><td></td><td></td><td></td><td></td><td class="s">I have to give credit where credit is due: SimpleDB::Client is heavily inspired by the Amazon::SimpleDB class distributed by Amazon itself (not to be confused with L&lt;Amazon::SimpleDB&gt; written by Timothy Appnel).</td></tr>
<tr><td class="h"><a name="324"></a>324</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="325"></a>325</td><td></td><td></td><td></td><td></td><td class="s">=head1 LEGAL</td></tr>
<tr><td class="h"><a name="326"></a>326</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="327"></a>327</td><td></td><td></td><td></td><td></td><td class="s">SimpleDB::Client is Copyright 2009-2010 Plain Black Corporation (L&lt;http://www.plainblack.com/&gt;) and is licensed under the same terms as Perl itself.</td></tr>
<tr><td class="h"><a name="328"></a>328</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="329"></a>329</td><td></td><td></td><td></td><td></td><td class="s">=cut</td></tr>
<tr><td class="h"><a name="330"></a>330</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="331"></a>331</td><td class="c3">3</td><td class="c0"><span title="Avg 20&micro;s">59&micro;s</span></td><td class="c3">2</td><td class="c3">327&micro;s</td><td class="s"><div class="calls"><div class="calls_in"># spent 170&micro;s (12+157) within SimpleDB::Client::BEGIN@331 which was called
#    once (12&micro;s+157&micro;s) by main::BEGIN@2 at <a href="lib-SimpleDB-Client-pm-line.html#331">line 331</a></div></div>no Moose;<div class="calls"><div class="calls_out"># spent   170&micro;s making 1 call to <a href="lib-SimpleDB-Client-pm-line.html#331">SimpleDB::Client::BEGIN@331</a>
# spent   157&micro;s making 1 call to <a href="Moose-Exporter-pm-line.html#470">Moose::Exporter::__ANON__[Moose/Exporter.pm:478]</a></div></div></td></tr>
<tr><td class="h"><a name="332"></a>332</td><td class="c3">1</td><td class="c0"><span title="Avg 33&micro;s">33&micro;s</span></td><td class="c3">2</td><td class="c0">14.2ms</td><td class="s">__PACKAGE__-&gt;meta-&gt;make_immutable;<div class="calls"><div class="calls_out"># spent  14.2ms making 1 call to <a href="Class-MOP-Class-pm-line.html#888">Class::MOP::Class::make_immutable</a>
# spent    12&micro;s making 1 call to <a >SimpleDB::Client::meta</a></div></div></td></tr>
<tr><td class="h"><a name="SimpleDB__Client__CORE_sort"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 13&micro;s within SimpleDB::Client::CORE:sort which was called 3 times, avg 4&micro;s/call:
# 3 times (13&micro;s+0s) by SimpleDB::Client::construct_request at <a href="lib-SimpleDB-Client-pm-line.html#166">line 166 of ../lib/SimpleDB/Client.pm</a>, avg 4&micro;s/call</div></div>sub SimpleDB::Client::CORE:sort; # xsub<br />        </td></tr>
</tbody></table></div>
        
            <script type="text/javascript"> $(document).ready(function() { 

        $("#subs_table").tablesorter({
            sortList: [[3,1]],
            headers: {
                3: { sorter: 'fmt_time' },
                4: { sorter: 'fmt_time' }
            }
        });
    
 } ); </script>
        
        <div class="footer">Report produced by the
        <a href="http://search.cpan.org/dist/Devel-NYTProf/">NYTProf 3.11</a>
        Perl profiler, developed by
        <a href="http://www.linkedin.com/in/timbunce">Tim Bunce</a> and
        <a href="http://code.nytimes.com">Adam Kaplan</a>.
        </div>
        <br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    </body></html>