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 5.06
-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Content-Language" content="en-us" />
    <meta name="robots" content="noindex,nofollow" />
    <title>Profile of Date/Manip/Date.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);
            var val = orig.replace(/ns/,'');
            if (val != orig) { return val / (1000*1000*1000); } 
            val = orig.replace(/[嵵]s/,''); /* micro */
            if (val != orig) { return val / (1000*1000); } 
            val = orig.replace(/ms/,'');
            if (val != orig) { return val / (1000); }
            val = orig.replace(/([0-9])s/,"$1");
            if (val != orig) { return val; }
            if (orig == '0') { return orig; } 
            var non_number = orig.replace(/^[-+]?[0-9.]+/, '', 'g');
            console.log('no match for fmt_time of '+orig+' (units:'+non_number+' charCodeAt0:'+non_number.charCodeAt(0)+')');
            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 mode_btn_selected">line view</span>&emsp;&raquo;</span><br />
            For ../dm5dm6_ex3
        </span>
</div>
<div class="headerForeground" style="float: right; text-align: right">
    <span class="siteTitle">&nbsp;</span>
    <span class="siteSubtitle">Run on Tue Feb 24 07:41:47 2015<br />Reported on Tue Feb 24 07:41:51 2015</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 class="file_summary"><tr><td class="h">Filename</td><td align="left"><a href="file:///home/sulbeck/local/lib/perl5/5.20.1/Date/Manip/Date.pm">/home/sulbeck/local/lib/perl5/5.20.1/Date/Manip/Date.pm</a></td></tr>
<tr><td class="h">Statements</td><td align="left">Executed 603899 statements in 515ms</td></tr></table>
        
        <table id="subs_table" border="1" cellpadding="0" class="tablesorter">
        <caption>Subroutines</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="c0">2436</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="3.2%">74.1ms</span></td><td class="c0"><span title="6.7%">155ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_time</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1607">_parse_time</a></td></tr>
<tr><td class="c0">2433</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="2.8%">65.7ms</span></td><td class="c0"><span title="94.9%">2.21s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::parse</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#101">parse</a></td></tr>
<tr><td class="c0">26750</td><td class="c0">11</td><td class="c3">1</td><td class="c0"><span title="2.6%">60.2ms</span></td><td class="c0"><span title="2.6%">60.2ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::CORE:subst</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">CORE:subst</a>&nbsp;(opcode)</td></tr>
<tr><td class="c0">2442</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="1.8%">41.3ms</span></td><td class="c0"><span title="3.9%">90.7ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_date_common</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1697">_parse_date_common</a></td></tr>
<tr><td class="c0">2430</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="1.6%">37.4ms</span></td><td class="c0"><span title="73.2%">1.70s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_check</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#936">_parse_check</a></td></tr>
<tr><td class="c0">21968</td><td class="c0">23</td><td class="c3">1</td><td class="c0"><span title="1.6%">36.1ms</span></td><td class="c0"><span title="1.6%">36.1ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::CORE:regcomp</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">CORE:regcomp</a>&nbsp;(opcode)</td></tr>
<tr><td class="c0">2430</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="1.5%">34.0ms</span></td><td class="c0"><span title="4.5%">105ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::set</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2510">set</a></td></tr>
<tr><td class="c0">14640</td><td class="c0">6</td><td class="c3">1</td><td class="c0"><span title="1.3%">31.1ms</span></td><td class="c0"><span title="1.3%">31.1ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::CORE:match</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">CORE:match</a>&nbsp;(opcode)</td></tr>
<tr><td class="c0">2442</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="1.1%">26.7ms</span></td><td class="c0"><span title="5.5%">127ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#415">_parse_date</a></td></tr>
<tr><td class="c0">2436</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="1.0%">23.4ms</span></td><td class="c0"><span title="1.5%">33.8ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_dow</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1756">_parse_dow</a></td></tr>
<tr><td class="c0">2430</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.7%">15.4ms</span></td><td class="c0"><span title="4.6%">108ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__parse_check</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1033">__parse_check</a></td></tr>
<tr><td class="c0">2436</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.5%">11.9ms</span></td><td class="c0"><span title="2.3%">52.8ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_datetime_iso8601</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1227">_parse_datetime_iso8601</a></td></tr>
<tr><td class="c0">2430</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.4%">9.63ms</span></td><td class="c0"><span title="1.2%">28.6ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_def_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2179">_def_date</a></td></tr>
<tr><td class="c0">4872</td><td class="c1">2</td><td class="c3">1</td><td class="c0"><span title="0.4%">9.52ms</span></td><td class="c3"><span title="0.4%">9.52ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_def_time</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2331">_def_time</a></td></tr>
<tr><td class="c0">2436</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.4%">9.50ms</span></td><td class="c1"><span title="0.8%">19.1ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_datetime_other</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1892">_parse_datetime_other</a></td></tr>
<tr><td class="c0">2434</td><td class="c1">2</td><td class="c1">2</td><td class="c0"><span title="0.4%">8.93ms</span></td><td class="c3"><span title="0.4%">8.93ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_init</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#44">_init</a></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%">8.81ms</span></td><td class="c3"><span title="0.4%">9.03ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@27</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#27">BEGIN@27</a></td></tr>
<tr><td class="c0">2436</td><td class="c3">1</td><td class="c3">1</td><td class="c0"><span title="0.3%">7.55ms</span></td><td class="c3"><span title="0.5%">11.2ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_time</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1289">_time</a></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%">6.14ms</span></td><td class="c3"><span title="0.5%">11.7ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@26</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#26">BEGIN@26</a></td></tr>
<tr><td class="c0">2440</td><td class="c0">5</td><td class="c3">1</td><td class="c0"><span title="0.2%">3.97ms</span></td><td class="c0"><span title="1.2%">27.8ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_iso8601_rx</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1078">_iso8601_rx</a>&nbsp;(recurses: max depth 1, inclusive time 18.8ms)</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%">855µs</span></td><td class="c3"><span title="0.4%">8.43ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@14</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#14">BEGIN@14</a></td></tr>
<tr><td class="c3">7</td><td class="c0">7</td><td class="c3">1</td><td class="c3"><span title="0.0%">349µs</span></td><td class="c3"><span title="0.5%">10.8ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_other_rx</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1323">_other_rx</a></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%">99µs</span></td><td class="c3"><span title="0.0%">100µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@20</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#20">BEGIN@20</a></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%">93µs</span></td><td class="c3"><span title="0.0%">94µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@21</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#21">BEGIN@21</a></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%">82µs</span></td><td class="c3"><span title="0.0%">218µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@431</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#431">BEGIN@431</a></td></tr>
<tr><td class="c3">6</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">81µs</span></td><td class="c3"><span title="0.2%">5.58ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_delta</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1835">_parse_delta</a></td></tr>
<tr><td class="c2">12</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">56µs</span></td><td class="c3"><span title="0.1%">2.34ms</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_date_other</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1978">_parse_date_other</a></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%">18µs</span></td><td class="c3"><span title="0.0%">18µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@629</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#629">BEGIN@629</a></td></tr>
<tr><td class="c1">15</td><td class="c0">15</td><td class="c3">1</td><td class="c3"><span title="0.0%">18µs</span></td><td class="c3"><span title="0.0%">18µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::CORE:qr</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">CORE:qr</a>&nbsp;(opcode)</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%">14µs</span></td><td class="c3"><span title="0.0%">14µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@4227</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4227">BEGIN@4227</a></td></tr>
<tr><td class="c3">6</td><td class="c3">1</td><td class="c3">1</td><td class="c3"><span title="0.0%">13µs</span></td><td class="c3"><span title="0.0%">13µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_holidays</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1799">_parse_holidays</a></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µs</span></td><td class="c3"><span title="0.0%">10µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@1288</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1288">BEGIN@1288</a></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µs</span></td><td class="c3"><span title="0.0%">8µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@3541</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3541">BEGIN@3541</a></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%">6µs</span></td><td class="c3"><span title="0.0%">7µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@3130</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3130">BEGIN@3130</a></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%">6µs</span></td><td class="c3"><span title="0.0%">6µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@2507</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2507">BEGIN@2507</a></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%">6µs</span></td><td class="c3"><span title="0.0%">9µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@18</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#18">BEGIN@18</a></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%">5µs</span></td><td class="c3"><span title="0.0%">7µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@1318</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1318">BEGIN@1318</a></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%">5µs</span></td><td class="c3"><span title="0.0%">72µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@22</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#22">BEGIN@22</a></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%">4µs</span></td><td class="c3"><span title="0.0%">16µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@23</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#23">BEGIN@23</a></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%">4µs</span></td><td class="c3"><span title="0.0%">5µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@3551</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3551">BEGIN@3551</a></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%">3µs</span></td><td class="c3"><span title="0.0%">10µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::BEGIN@19</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#19">BEGIN@19</a></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%">3µs</span></td><td class="c3"><span title="0.0%">3µs</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::END</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#31">END</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__calc_date_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3059">__calc_date_date</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__calc_date_delta</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3225">__calc_date_delta</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__calc_date_delta_approx</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3457">__calc_date_delta_approx</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__calc_date_delta_exact</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3525">__calc_date_delta_exact</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__calc_date_delta_inverse</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3311">__calc_date_delta_inverse</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__is_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3863">__is_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__nearest_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4029">__nearest_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__next_prev</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2756">__next_prev</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::__nextprev_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3972">__nextprev_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_calc_date_check_dst</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3656">_calc_date_check_dst</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_calc_date_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2948">_calc_date_date</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_calc_date_delta</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3185">_calc_date_delta</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_cmp_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3448">_cmp_date</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_def_date_dow</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2264">_def_date_dow</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_def_date_doy</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2237">_def_date_doy</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_event_objs</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4794">_event_objs</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_events_year</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4733">_events_year</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_format_regexp</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#643">_format_regexp</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_holiday_objs</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4070">_holiday_objs</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_holidays</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4130">_holidays</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_holidays_year</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4158">_holidays_year</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_init_args</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#79">_init_args</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_date_iso8601</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1258">_parse_date_iso8601</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::_parse_tz</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#1743">_parse_tz</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::calc</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2934">calc</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::cmp</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2479">cmp</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::complete</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3774">complete</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::convert</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3812">convert</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::holiday</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3921">holiday</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::input</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#92">input</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::is_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3853">is_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::is_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#37">is_date</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::list_events</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4549">list_events</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::list_holidays</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3899">list_holidays</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::nearest_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4011">nearest_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::next</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2744">next</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::next_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3948">next_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::parse_date</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#359">parse_date</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::parse_format</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#486">parse_format</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::parse_time</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#325">parse_time</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::prev</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2732">prev</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::prev_business_day</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3960">prev_business_day</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::printf</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#4234">printf</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::secs_since_1970_GMT</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3713">secs_since_1970_GMT</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::value</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#2398">value</a></td></tr>
<tr><td class="c3">0</td><td class="c3">0</td><td class="c3">0</td><td class="c3"><span title="0.0%">0s</span></td><td class="c3"><span title="0.0%">0s</span></td><td class="sub_name"><span style="display: none;">Date::Manip::Date::::week_of_year</span>Date::Manip::Date::<a href="Date-Manip-Date-pm-12-line.html#3733">week_of_year</a></td></tr>
</tbody></table>
                Call graph for these subroutines as a
                <a href="http://en.wikipedia.org/wiki/Graphviz">Graphviz</a>
                <a href="home-sulbeck-local-lib-perl5-5-20-1-Date-Manip-Date-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 (inclusive)">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 Date::Manip::Date;</td></tr>
<tr><td class="h"><a name="2"></a>2</td><td></td><td></td><td></td><td></td><td class="s"># Copyright (c) 1995-2015 Sullivan Beck. All rights reserved.</td></tr>
<tr><td class="h"><a name="3"></a>3</td><td></td><td></td><td></td><td></td><td class="s"># This program is free software; you can redistribute it and/or modify it</td></tr>
<tr><td class="h"><a name="4"></a>4</td><td></td><td></td><td></td><td></td><td class="s"># under the same terms as Perl itself.</td></tr>
<tr><td class="h"><a name="5"></a>5</td><td></td><td></td><td></td><td></td><td class="s"></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"># Any routine that starts with an underscore (_) is NOT intended for</td></tr>
<tr><td class="h"><a name="8"></a>8</td><td></td><td></td><td></td><td></td><td class="s"># public use.  They are for internal use in the the Date::Manip</td></tr>
<tr><td class="h"><a name="9"></a>9</td><td></td><td></td><td></td><td></td><td class="s"># modules and are subject to change without warning or notice.</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"># ABSOLUTELY NO USER SUPPORT IS OFFERED FOR THESE ROUTINES!</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"></td></tr>
<tr><td class="h"><a name="14"></a>14</td><td class="c3">2</td><td class="c3"><span title="Avg 37µs">74µs</span></td><td class="c3">1</td><td class="c0">8.43ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 8.43ms (855µs+7.58) within Date::Manip::Date::BEGIN@14 which was called:
#    once (855µs+7.58ms) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#14">line 14</a></div></div>use Date::Manip::Obj;<div class="calls"><div class="calls_out"># spent  8.43ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#14">Date::Manip::Date::BEGIN@14</a></div></div></td></tr>
<tr><td class="h"><a name="15"></a>15</td><td class="c3">1</td><td class="c3"><span title="Avg 6µs">6µs</span></td><td></td><td></td><td class="s">@ISA = ('Date::Manip::Obj');</td></tr>
<tr><td class="h"><a name="16"></a>16</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="17"></a>17</td><td class="c3">1</td><td class="c3"><span title="Avg 7µs">7µs</span></td><td></td><td></td><td class="s">require 5.010000;</td></tr>
<tr><td class="h"><a name="18"></a>18</td><td class="c3">2</td><td class="c3"><span title="Avg 6µs">12µs</span></td><td class="c3">2</td><td class="c3">13µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 9µs (6+4) within Date::Manip::Date::BEGIN@18 which was called:
#    once (6µs+4µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#18">line 18</a></div></div>use warnings;<div class="calls"><div class="calls_out"># spent     9µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#18">Date::Manip::Date::BEGIN@18</a>
# spent     4µs making 1 call to <a href="warnings-pm-2-line.html#993">warnings::import</a></div></div></td></tr>
<tr><td class="h"><a name="19"></a>19</td><td class="c3">2</td><td class="c3"><span title="Avg 5µs">11µs</span></td><td class="c3">2</td><td class="c3">17µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 10µs (3+7) within Date::Manip::Date::BEGIN@19 which was called:
#    once (3µs+7µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#19">line 19</a></div></div>use strict;<div class="calls"><div class="calls_out"># spent    10µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#19">Date::Manip::Date::BEGIN@19</a>
# spent     7µs making 1 call to <a href="strict-pm-3-line.html#42">strict::import</a></div></div></td></tr>
<tr><td class="h"><a name="20"></a>20</td><td class="c3">2</td><td class="c3"><span title="Avg 53µs">106µs</span></td><td class="c3">2</td><td class="c3">101µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 100µs (99+1) within Date::Manip::Date::BEGIN@20 which was called:
#    once (99µs+1µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#20">line 20</a></div></div>use integer;<div class="calls"><div class="calls_out"># spent   100µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#20">Date::Manip::Date::BEGIN@20</a>
# spent     1µs making 1 call to <a href="integer-pm-27-line.html#85">integer::import</a></div></div></td></tr>
<tr><td class="h"><a name="21"></a>21</td><td class="c3">2</td><td class="c3"><span title="Avg 50µs">101µs</span></td><td class="c3">2</td><td class="c3">96µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 94µs (93+1) within Date::Manip::Date::BEGIN@21 which was called:
#    once (93µs+1µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#21">line 21</a></div></div>use utf8;<div class="calls"><div class="calls_out"># spent    94µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#21">Date::Manip::Date::BEGIN@21</a>
# spent     1µs making 1 call to <a href="utf8-pm-28-line.html#7">utf8::import</a></div></div></td></tr>
<tr><td class="h"><a name="22"></a>22</td><td class="c3">2</td><td class="c3"><span title="Avg 8µs">16µs</span></td><td class="c3">2</td><td class="c3">139µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 72µs (5+67) within Date::Manip::Date::BEGIN@22 which was called:
#    once (5µs+67µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#22">line 22</a></div></div>use IO::File;<div class="calls"><div class="calls_out"># spent    72µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#22">Date::Manip::Date::BEGIN@22</a>
# spent    67µs making 1 call to <a href="Exporter-pm-5-line.html#28">Exporter::import</a></div></div></td></tr>
<tr><td class="h"><a name="23"></a>23</td><td class="c3">2</td><td class="c3"><span title="Avg 11µs">23µs</span></td><td class="c3">2</td><td class="c3">27µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 16µs (4+11) within Date::Manip::Date::BEGIN@23 which was called:
#    once (4µs+11µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#23">line 23</a></div></div>use Storable qw(dclone);<div class="calls"><div class="calls_out"># spent    16µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#23">Date::Manip::Date::BEGIN@23</a>
# spent    11µs making 1 call to <a href="Exporter-pm-5-line.html#28">Exporter::import</a></div></div></td></tr>
<tr><td class="h"><a name="24"></a>24</td><td></td><td></td><td></td><td></td><td class="s">#use re 'debug';</td></tr>
<tr><td class="h"><a name="25"></a>25</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="26"></a>26</td><td class="c3">2</td><td class="c3"><span title="Avg 34µs">68µs</span></td><td class="c3">1</td><td class="c0">11.7ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 11.7ms (6.14+5.61) within Date::Manip::Date::BEGIN@26 which was called:
#    once (6.14ms+5.61ms) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#26">line 26</a></div></div>use Date::Manip::Base;<div class="calls"><div class="calls_out"># spent  11.7ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#26">Date::Manip::Date::BEGIN@26</a></div></div></td></tr>
<tr><td class="h"><a name="27"></a>27</td><td class="c3">2</td><td class="c0"><span title="Avg 426µs">852µs</span></td><td class="c3">1</td><td class="c0">9.03ms</td><td class="s"><div class="calls"><div class="calls_in"># spent 9.03ms (8.81+224µs) within Date::Manip::Date::BEGIN@27 which was called:
#    once (8.81ms+224µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#27">line 27</a></div></div>use Date::Manip::TZ;<div class="calls"><div class="calls_out"># spent  9.03ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#27">Date::Manip::Date::BEGIN@27</a></div></div></td></tr>
<tr><td class="h"><a name="28"></a>28</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="29"></a>29</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">our $VERSION;</td></tr>
<tr><td class="h"><a name="30"></a>30</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">$VERSION='6.49';</td></tr>
<tr><td class="h"><a name="31"></a>31</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 3µs within Date::Manip::Date::END which was called:
#    once (3µs+0s) by main::RUNTIME at <a href="dm5dm6_ex3-1-line.html#0">line 0 of ../dm5dm6_ex3</a></div></div>END { undef $VERSION; }</td></tr>
<tr><td class="h"><a name="32"></a>32</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="33"></a>33</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="34"></a>34</td><td></td><td></td><td></td><td></td><td class="s"># BASE METHODS</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"></td></tr>
<tr><td class="h"><a name="37"></a>37</td><td></td><td></td><td></td><td></td><td class="s">sub is_date {</td></tr>
<tr><td class="h"><a name="38"></a>38</td><td></td><td></td><td></td><td></td><td class="s">   return 1;</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"></td></tr>
<tr><td class="h"><a name="41"></a>41</td><td></td><td></td><td></td><td></td><td class="s"># Call this every time a new date is put in to make sure everything is</td></tr>
<tr><td class="h"><a name="42"></a>42</td><td></td><td></td><td></td><td></td><td class="s"># correctly initialized.</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"><div class="calls"><div class="calls_in"># spent 8.93ms within Date::Manip::Date::_init which was called 2434 times, avg 4µs/call:
# 2433 times (8.93ms+0s) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#103">line 103</a>, avg 4µs/call
#       once (9µs+0s) by Date::Manip::Obj::new at <a href="Date-Manip-Obj-pm-13-line.html#162">line 162 of Date/Manip/Obj.pm</a></div></div>sub _init {</td></tr>
<tr><td class="h"><a name="45"></a>45</td><td class="c0">2434</td><td class="c2"><span title="Avg 157ns">382µs</span></td><td></td><td></td><td class="s">   my($self) = @_;</td></tr>
<tr><td class="h"><a name="46"></a>46</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="47"></a>47</td><td class="c0">2434</td><td class="c1"><span title="Avg 203ns">493µs</span></td><td></td><td></td><td class="s">   $$self{'err'}              = '';</td></tr>
<tr><td class="h"><a name="48"></a>48</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="49"></a>49</td><td class="c0">2434</td><td class="c0"><span title="Avg 4µs">9.60ms</span></td><td></td><td></td><td class="s">   $$self{'data'} =</td></tr>
<tr><td class="h"><a name="50"></a>50</td><td></td><td></td><td></td><td></td><td class="s">     {</td></tr>
<tr><td class="h"><a name="51"></a>51</td><td></td><td></td><td></td><td></td><td class="s">      'set'    =&gt; 0,         # 1 if the date has been set</td></tr>
<tr><td class="h"><a name="52"></a>52</td><td></td><td></td><td></td><td></td><td class="s">                             # 2 if the date is in the process of being set</td></tr>
<tr><td class="h"><a name="53"></a>53</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="54"></a>54</td><td></td><td></td><td></td><td></td><td class="s">      # The date as input</td></tr>
<tr><td class="h"><a name="55"></a>55</td><td></td><td></td><td></td><td></td><td class="s">      'in'     =&gt; '',        # the string that was parsed (if any)</td></tr>
<tr><td class="h"><a name="56"></a>56</td><td></td><td></td><td></td><td></td><td class="s">      'zin'    =&gt; '',        # the timezone that was parsed (if any)</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">      # The date in the parsed timezone</td></tr>
<tr><td class="h"><a name="59"></a>59</td><td></td><td></td><td></td><td></td><td class="s">      'date'   =&gt; [],        # the parsed date split</td></tr>
<tr><td class="h"><a name="60"></a>60</td><td></td><td></td><td></td><td></td><td class="s">      'def'    =&gt; [0,0,0,0,0,0],</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">      # 1 for each field that came from</td></tr>
<tr><td class="h"><a name="63"></a>63</td><td></td><td></td><td></td><td></td><td class="s">      # defaults rather than parsed</td></tr>
<tr><td class="h"><a name="64"></a>64</td><td></td><td></td><td></td><td></td><td class="s">      # '' for an implied field</td></tr>
<tr><td class="h"><a name="65"></a>65</td><td></td><td></td><td></td><td></td><td class="s">      'tz'     =&gt; '',        # the timezone of the date</td></tr>
<tr><td class="h"><a name="66"></a>66</td><td></td><td></td><td></td><td></td><td class="s">      'isdst'  =&gt; '',        # 1 if the date is in DST.</td></tr>
<tr><td class="h"><a name="67"></a>67</td><td></td><td></td><td></td><td></td><td class="s">      'offset' =&gt; [],        # The offset from GMT</td></tr>
<tr><td class="h"><a name="68"></a>68</td><td></td><td></td><td></td><td></td><td class="s">      'abb'    =&gt; '',        # The timezone abbreviation.</td></tr>
<tr><td class="h"><a name="69"></a>69</td><td></td><td></td><td></td><td></td><td class="s">      'f'      =&gt; {},        # fields used in printing a date</td></tr>
<tr><td class="h"><a name="70"></a>70</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="71"></a>71</td><td></td><td></td><td></td><td></td><td class="s">      # The date in GMT</td></tr>
<tr><td class="h"><a name="72"></a>72</td><td></td><td></td><td></td><td></td><td class="s">      'gmt'    =&gt; [],        # the date converted to GMT</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 date in local timezone</td></tr>
<tr><td class="h"><a name="75"></a>75</td><td></td><td></td><td></td><td></td><td class="s">      'loc'    =&gt; [],        # the date converted to local timezone</td></tr>
<tr><td class="h"><a name="76"></a>76</td><td></td><td></td><td></td><td></td><td class="s">     };</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"></td></tr>
<tr><td class="h"><a name="79"></a>79</td><td></td><td></td><td></td><td></td><td class="s">sub _init_args {</td></tr>
<tr><td class="h"><a name="80"></a>80</td><td></td><td></td><td></td><td></td><td class="s">   my($self) = @_;</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">   my @args = @{ $$self{'args'} };</td></tr>
<tr><td class="h"><a name="83"></a>83</td><td></td><td></td><td></td><td></td><td class="s">   if (@args) {</td></tr>
<tr><td class="h"><a name="84"></a>84</td><td></td><td></td><td></td><td></td><td class="s">      if ($#args == 0) {</td></tr>
<tr><td class="h"><a name="85"></a>85</td><td></td><td></td><td></td><td></td><td class="s">         $self-&gt;parse($args[0]);</td></tr>
<tr><td class="h"><a name="86"></a>86</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="87"></a>87</td><td></td><td></td><td></td><td></td><td class="s">         warn &quot;WARNING: [new] invalid arguments: @args\n&quot;;</td></tr>
<tr><td class="h"><a name="88"></a>88</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="89"></a>89</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="90"></a>90</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="91"></a>91</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="92"></a>92</td><td></td><td></td><td></td><td></td><td class="s">sub input {</td></tr>
<tr><td class="h"><a name="93"></a>93</td><td></td><td></td><td></td><td></td><td class="s">   my($self) = @_;</td></tr>
<tr><td class="h"><a name="94"></a>94</td><td></td><td></td><td></td><td></td><td class="s">   return  $$self{'data'}{'in'};</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"></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"># DATE PARSING</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"></td></tr>
<tr><td class="h"><a name="101"></a>101</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 2.21s (65.7ms+2.14) within Date::Manip::Date::parse which was called 2433 times, avg 907µs/call:
# 2433 times (65.7ms+2.14s) by main::RUNTIME at <a href="dm5dm6_ex3-1-line.html#39">line 39 of ../dm5dm6_ex3</a>, avg 907µs/call</div></div>sub parse {</td></tr>
<tr><td class="h"><a name="102"></a>102</td><td class="c0">2433</td><td class="c0"><span title="Avg 328ns">798µs</span></td><td></td><td></td><td class="s">   my($self,$instring,@opts) = @_;</td></tr>
<tr><td class="h"><a name="103"></a>103</td><td class="c0">2433</td><td class="c0"><span title="Avg 2µs">4.65ms</span></td><td class="c0">2433</td><td class="c0">8.93ms</td><td class="s">   $self-&gt;_init();<div class="calls"><div class="calls_out">   # spent  8.93ms making 2433 calls to <a href="Date-Manip-Date-pm-12-line.html#44">Date::Manip::Date::_init</a>, avg 4µs/call</div></div></td></tr>
<tr><td class="h"><a name="104"></a>104</td><td class="c0">2433</td><td class="c3"><span title="Avg 115ns">281µs</span></td><td></td><td></td><td class="s">   my $noupdate = 0;</td></tr>
<tr><td class="h"><a name="105"></a>105</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="106"></a>106</td><td class="c0">2433</td><td class="c3"><span title="Avg 113ns">274µs</span></td><td></td><td></td><td class="s">   if (! $instring) {</td></tr>
<tr><td class="h"><a name="107"></a>107</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[parse] Empty date string';</td></tr>
<tr><td class="h"><a name="108"></a>108</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</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"></td></tr>
<tr><td class="h"><a name="111"></a>111</td><td class="c0">2433</td><td class="c0"><span title="Avg 397ns">965µs</span></td><td></td><td></td><td class="s">   my %opts     = map { $_,1 } @opts;</td></tr>
<tr><td class="h"><a name="112"></a>112</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="113"></a>113</td><td class="c0">2433</td><td class="c1"><span title="Avg 182ns">442µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="114"></a>114</td><td class="c0">2433</td><td class="c3"><span title="Avg 112ns">272µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</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 class="c0">2433</td><td class="c2"><span title="Avg 128ns">312µs</span></td><td></td><td></td><td class="s">   my($done,$y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off,$dow,$got_time,</td></tr>
<tr><td class="h"><a name="117"></a>117</td><td></td><td></td><td></td><td></td><td class="s">      $default_time,$firsterr);</td></tr>
<tr><td class="h"><a name="118"></a>118</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="119"></a>119</td><td></td><td></td><td></td><td></td><td class="s">   ENCODING:</td></tr>
<tr><td class="h"><a name="120"></a>120</td><td class="c0">2433</td><td class="c0"><span title="Avg 723ns">1.76ms</span></td><td class="c0">2433</td><td class="c0">21.2ms</td><td class="s">   foreach my $string ($dmb-&gt;_encoding($instring)) {<div class="calls"><div class="calls_out">   # spent  21.2ms making 2433 calls to <a href="Date-Manip-Base-pm-29-line.html#2392">Date::Manip::Base::_encoding</a>, avg 9µs/call</div></div></td></tr>
<tr><td class="h"><a name="121"></a>121</td><td class="c0">2436</td><td class="c3"><span title="Avg 119ns">289µs</span></td><td></td><td></td><td class="s">      $got_time     = 0;</td></tr>
<tr><td class="h"><a name="122"></a>122</td><td class="c0">2436</td><td class="c3"><span title="Avg 80ns">194µs</span></td><td></td><td></td><td class="s">      $default_time = 0;</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">      # Put parse in a simple loop for an easy exit.</td></tr>
<tr><td class="h"><a name="125"></a>125</td><td class="c0">2436</td><td class="c3"><span title="Avg 91ns">222µs</span></td><td></td><td></td><td class="s">      PARSE:</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 class="c0">2436</td><td class="c3"><span title="Avg 99ns">240µs</span></td><td></td><td></td><td class="s">         my(@tmp,$tmp);</td></tr>
<tr><td class="h"><a name="128"></a>128</td><td class="c0">2436</td><td class="c1"><span title="Avg 181ns">441µs</span></td><td></td><td></td><td class="s">         $$self{'err'} = '';</td></tr>
<tr><td class="h"><a name="129"></a>129</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="130"></a>130</td><td></td><td></td><td></td><td></td><td class="s">         # Check the standard date format</td></tr>
<tr><td class="h"><a name="131"></a>131</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="132"></a>132</td><td class="c0">2436</td><td class="c0"><span title="Avg 717ns">1.75ms</span></td><td class="c0">2436</td><td class="c0">10.7ms</td><td class="s">         $tmp = $dmb-&gt;split('date',$string);<div class="calls"><div class="calls_out">         # spent  10.7ms making 2436 calls to <a href="Date-Manip-Base-pm-29-line.html#1615">Date::Manip::Base::split</a>, avg 4µs/call</div></div></td></tr>
<tr><td class="h"><a name="133"></a>133</td><td class="c0">2436</td><td class="c3"><span title="Avg 118ns">288µs</span></td><td></td><td></td><td class="s">         if (defined($tmp)) {</td></tr>
<tr><td class="h"><a name="134"></a>134</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) = @$tmp;</td></tr>
<tr><td class="h"><a name="135"></a>135</td><td></td><td></td><td></td><td></td><td class="s">            $got_time            = 1;</td></tr>
<tr><td class="h"><a name="136"></a>136</td><td></td><td></td><td></td><td></td><td class="s">            last PARSE;</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"></td></tr>
<tr><td class="h"><a name="139"></a>139</td><td></td><td></td><td></td><td></td><td class="s">         # Parse ISO 8601 dates now (which may have a timezone).</td></tr>
<tr><td class="h"><a name="140"></a>140</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="141"></a>141</td><td class="c0">2436</td><td class="c0"><span title="Avg 317ns">773µs</span></td><td></td><td></td><td class="s">         if (! exists $opts{'noiso8601'}) {</td></tr>
<tr><td class="h"><a name="142"></a>142</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">2.75ms</span></td><td class="c0">2436</td><td class="c0">52.8ms</td><td class="s">            ($done,@tmp) = $self-&gt;_parse_datetime_iso8601($string,\$noupdate);<div class="calls"><div class="calls_out">            # spent  52.8ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1227">Date::Manip::Date::_parse_datetime_iso8601</a>, avg 22µs/call</div></div></td></tr>
<tr><td class="h"><a name="143"></a>143</td><td class="c0">2436</td><td class="c1"><span title="Avg 171ns">418µs</span></td><td></td><td></td><td class="s">            if ($done) {</td></tr>
<tr><td class="h"><a name="144"></a>144</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off) = @tmp;</td></tr>
<tr><td class="h"><a name="145"></a>145</td><td></td><td></td><td></td><td></td><td class="s">               $got_time                                      = 1;</td></tr>
<tr><td class="h"><a name="146"></a>146</td><td></td><td></td><td></td><td></td><td class="s">               last PARSE;</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">         }</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">         # There's lots of ways that commas may be included. Remove</td></tr>
<tr><td class="h"><a name="151"></a>151</td><td></td><td></td><td></td><td></td><td class="s">         # them (unless it's preceded and followed by a digit in</td></tr>
<tr><td class="h"><a name="152"></a>152</td><td></td><td></td><td></td><td></td><td class="s">         # which case it's probably a fractional separator).</td></tr>
<tr><td class="h"><a name="153"></a>153</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="154"></a>154</td><td class="c0">2436</td><td class="c0"><span title="Avg 3µs">7.20ms</span></td><td class="c0">2436</td><td class="c2">4.39ms</td><td class="s">         $string =~ s/(?&lt;!\d),/ /g;<div class="calls"><div class="calls_out">         # spent  4.39ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="155"></a>155</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">2.69ms</span></td><td class="c0">2436</td><td class="c3">637µs</td><td class="s">         $string =~ s/,(?!\d)/ /g;<div class="calls"><div class="calls_out">         # spent   637µs making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 262ns/call</div></div></td></tr>
<tr><td class="h"><a name="156"></a>156</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="157"></a>157</td><td></td><td></td><td></td><td></td><td class="s">         # Some special full date/time formats ('now', 'epoch')</td></tr>
<tr><td class="h"><a name="158"></a>158</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="159"></a>159</td><td class="c0">2436</td><td class="c0"><span title="Avg 262ns">637µs</span></td><td></td><td></td><td class="s">         if (! exists $opts{'nospecial'}) {</td></tr>
<tr><td class="h"><a name="160"></a>160</td><td class="c0">2436</td><td class="c0"><span title="Avg 948ns">2.31ms</span></td><td class="c0">2436</td><td class="c0">19.1ms</td><td class="s">            ($done,@tmp) = $self-&gt;_parse_datetime_other($string,\$noupdate);<div class="calls"><div class="calls_out">            # spent  19.1ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1892">Date::Manip::Date::_parse_datetime_other</a>, avg 8µs/call</div></div></td></tr>
<tr><td class="h"><a name="161"></a>161</td><td class="c0">2436</td><td class="c3"><span title="Avg 123ns">299µs</span></td><td></td><td></td><td class="s">            if ($done) {</td></tr>
<tr><td class="h"><a name="162"></a>162</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off) = @tmp;</td></tr>
<tr><td class="h"><a name="163"></a>163</td><td></td><td></td><td></td><td></td><td class="s">               $got_time = 1;</td></tr>
<tr><td class="h"><a name="164"></a>164</td><td></td><td></td><td></td><td></td><td class="s">               last PARSE;</td></tr>
<tr><td class="h"><a name="165"></a>165</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="166"></a>166</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="167"></a>167</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="168"></a>168</td><td></td><td></td><td></td><td></td><td class="s">         # Parse (and remove) the time (and an immediately following timezone).</td></tr>
<tr><td class="h"><a name="169"></a>169</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="170"></a>170</td><td class="c0">2436</td><td class="c0"><span title="Avg 2µs">5.46ms</span></td><td class="c0">2436</td><td class="c0">155ms</td><td class="s">         ($got_time,@tmp) = $self-&gt;_parse_time('parse',$string,\$noupdate,%opts);<div class="calls"><div class="calls_out">         # spent   155ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1607">Date::Manip::Date::_parse_time</a>, avg 64µs/call</div></div></td></tr>
<tr><td class="h"><a name="171"></a>171</td><td class="c0">2436</td><td class="c0"><span title="Avg 553ns">1.35ms</span></td><td></td><td></td><td class="s">         if ($got_time) {</td></tr>
<tr><td class="h"><a name="172"></a>172</td><td></td><td></td><td></td><td></td><td class="s">            ($string,$h,$mn,$s,$tzstring,$zone,$abb,$off) = @tmp;</td></tr>
<tr><td class="h"><a name="173"></a>173</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="174"></a>174</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="175"></a>175</td><td class="c0">2436</td><td class="c3"><span title="Avg 87ns">213µs</span></td><td></td><td></td><td class="s">         if (! $string) {</td></tr>
<tr><td class="h"><a name="176"></a>176</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,\$noupdate);</td></tr>
<tr><td class="h"><a name="177"></a>177</td><td></td><td></td><td></td><td></td><td class="s">            last;</td></tr>
<tr><td class="h"><a name="178"></a>178</td><td></td><td></td><td></td><td></td><td class="s">         }</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></td><td></td><td></td><td></td><td class="s">         # Parse (and remove) the day of week. Also, handle the simple DoW</td></tr>
<tr><td class="h"><a name="181"></a>181</td><td></td><td></td><td></td><td></td><td class="s">         # formats.</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 class="c0">2436</td><td class="c0"><span title="Avg 321ns">783µs</span></td><td></td><td></td><td class="s">         if (! exists $opts{'nodow'}) {</td></tr>
<tr><td class="h"><a name="184"></a>184</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">3.58ms</span></td><td class="c0">2436</td><td class="c0">33.8ms</td><td class="s">            ($done,@tmp) = $self-&gt;_parse_dow($string,\$noupdate);<div class="calls"><div class="calls_out">            # spent  33.8ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1756">Date::Manip::Date::_parse_dow</a>, avg 14µs/call</div></div></td></tr>
<tr><td class="h"><a name="185"></a>185</td><td class="c0">2436</td><td class="c0"><span title="Avg 250ns">608µs</span></td><td></td><td></td><td class="s">            if (@tmp) {</td></tr>
<tr><td class="h"><a name="186"></a>186</td><td class="c0">2401</td><td class="c1"><span title="Avg 217ns">522µs</span></td><td></td><td></td><td class="s">               if ($done) {</td></tr>
<tr><td class="h"><a name="187"></a>187</td><td></td><td></td><td></td><td></td><td class="s">                  ($y,$m,$d)    = @tmp;</td></tr>
<tr><td class="h"><a name="188"></a>188</td><td></td><td></td><td></td><td></td><td class="s">                  $default_time = 1;</td></tr>
<tr><td class="h"><a name="189"></a>189</td><td></td><td></td><td></td><td></td><td class="s">                  last PARSE;</td></tr>
<tr><td class="h"><a name="190"></a>190</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="191"></a>191</td><td class="c0">2401</td><td class="c0"><span title="Avg 269ns">645µs</span></td><td></td><td></td><td class="s">                  ($string,$dow) = @tmp;</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">            }</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 class="c0">2436</td><td class="c3"><span title="Avg 100ns">244µs</span></td><td></td><td></td><td class="s">         $dow = 0  if (! $dow);</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">         # At this point, the string might contain the following dates:</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">         #   OTHER</td></tr>
<tr><td class="h"><a name="200"></a>200</td><td></td><td></td><td></td><td></td><td class="s">         #   OTHER ZONE / ZONE OTHER</td></tr>
<tr><td class="h"><a name="201"></a>201</td><td></td><td></td><td></td><td></td><td class="s">         #   DELTA</td></tr>
<tr><td class="h"><a name="202"></a>202</td><td></td><td></td><td></td><td></td><td class="s">         #   DELTA ZONE / ZONE DELTA</td></tr>
<tr><td class="h"><a name="203"></a>203</td><td></td><td></td><td></td><td></td><td class="s">         #   HOLIDAY</td></tr>
<tr><td class="h"><a name="204"></a>204</td><td></td><td></td><td></td><td></td><td class="s">         #   HOLIDAY ZONE / ZONE HOLIDAY</td></tr>
<tr><td class="h"><a name="205"></a>205</td><td></td><td></td><td></td><td></td><td class="s">         #</td></tr>
<tr><td class="h"><a name="206"></a>206</td><td></td><td></td><td></td><td></td><td class="s">         # ZONE is only allowed if it wasn't parsed with the time</td></tr>
<tr><td class="h"><a name="207"></a>207</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="208"></a>208</td><td></td><td></td><td></td><td></td><td class="s">         # Unfortunately, there are some conflicts between zones and</td></tr>
<tr><td class="h"><a name="209"></a>209</td><td></td><td></td><td></td><td></td><td class="s">         # some other formats, so try parsing the entire string as a date.</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 class="c0">2436</td><td class="c0"><span title="Avg 2µs">4.08ms</span></td><td class="c0">2436</td><td class="c0">127ms</td><td class="s">         (@tmp) = $self-&gt;_parse_date($string,$dow,\$noupdate,%opts);<div class="calls"><div class="calls_out">         # spent   127ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#415">Date::Manip::Date::_parse_date</a>, avg 52µs/call</div></div></td></tr>
<tr><td class="h"><a name="212"></a>212</td><td class="c0">2436</td><td class="c3"><span title="Avg 105ns">257µs</span></td><td></td><td></td><td class="s">         if (@tmp) {</td></tr>
<tr><td class="h"><a name="213"></a>213</td><td class="c0">2430</td><td class="c0"><span title="Avg 284ns">689µs</span></td><td></td><td></td><td class="s">            ($y,$m,$d,$dow) = @tmp;</td></tr>
<tr><td class="h"><a name="214"></a>214</td><td class="c0">2430</td><td class="c3"><span title="Avg 90ns">218µs</span></td><td></td><td></td><td class="s">            $default_time = 1;</td></tr>
<tr><td class="h"><a name="215"></a>215</td><td class="c0">2430</td><td class="c0"><span title="Avg 508ns">1.24ms</span></td><td></td><td></td><td class="s">            last PARSE;</td></tr>
<tr><td class="h"><a name="216"></a>216</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="217"></a>217</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="218"></a>218</td><td></td><td></td><td></td><td></td><td class="s">         # Parse any timezone</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 class="c3">6</td><td class="c3"><span title="Avg 150ns">900ns</span></td><td></td><td></td><td class="s">         if (! $tzstring) {</td></tr>
<tr><td class="h"><a name="221"></a>221</td><td></td><td></td><td></td><td></td><td class="s">            ($string,@tmp) = $self-&gt;_parse_tz($string,\$noupdate);</td></tr>
<tr><td class="h"><a name="222"></a>222</td><td></td><td></td><td></td><td></td><td class="s">            ($tzstring,$zone,$abb,$off) = @tmp  if (@tmp);</td></tr>
<tr><td class="h"><a name="223"></a>223</td><td></td><td></td><td></td><td></td><td class="s">            last PARSE  if (! $string);</td></tr>
<tr><td class="h"><a name="224"></a>224</td><td></td><td></td><td></td><td></td><td class="s">         }</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">         # Try the remainder of the string as a date.</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 class="c3">6</td><td class="c3"><span title="Avg 300ns">2µs</span></td><td></td><td></td><td class="s">         if ($tzstring) {</td></tr>
<tr><td class="h"><a name="229"></a>229</td><td class="c3">6</td><td class="c3"><span title="Avg 917ns">6µs</span></td><td class="c3">6</td><td class="c3">183µs</td><td class="s">            (@tmp) = $self-&gt;_parse_date($string,$dow,\$noupdate,%opts);<div class="calls"><div class="calls_out">            # spent   183µs making 6 calls to <a href="Date-Manip-Date-pm-12-line.html#415">Date::Manip::Date::_parse_date</a>, avg 30µs/call</div></div></td></tr>
<tr><td class="h"><a name="230"></a>230</td><td class="c3">6</td><td class="c3"><span title="Avg 200ns">1µs</span></td><td></td><td></td><td class="s">            if (@tmp) {</td></tr>
<tr><td class="h"><a name="231"></a>231</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d,$dow) = @tmp;</td></tr>
<tr><td class="h"><a name="232"></a>232</td><td></td><td></td><td></td><td></td><td class="s">               $default_time = 1;</td></tr>
<tr><td class="h"><a name="233"></a>233</td><td></td><td></td><td></td><td></td><td class="s">               last PARSE;</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">         }</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">         # Parse deltas</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">         # Occasionally, a delta is entered for a date (which is</td></tr>
<tr><td class="h"><a name="240"></a>240</td><td></td><td></td><td></td><td></td><td class="s">         # interpreted as the date relative to now). There can be some</td></tr>
<tr><td class="h"><a name="241"></a>241</td><td></td><td></td><td></td><td></td><td class="s">         # confusion between a date and a delta, but the most</td></tr>
<tr><td class="h"><a name="242"></a>242</td><td></td><td></td><td></td><td></td><td class="s">         # important conflicts are the ISO 8601 dates (many of which</td></tr>
<tr><td class="h"><a name="243"></a>243</td><td></td><td></td><td></td><td></td><td class="s">         # could be interpreted as a delta), but those have already</td></tr>
<tr><td class="h"><a name="244"></a>244</td><td></td><td></td><td></td><td></td><td class="s">         # been taken care of.</td></tr>
<tr><td class="h"><a name="245"></a>245</td><td></td><td></td><td></td><td></td><td class="s">         #</td></tr>
<tr><td class="h"><a name="246"></a>246</td><td></td><td></td><td></td><td></td><td class="s">         # We may have already gotten the time:</td></tr>
<tr><td class="h"><a name="247"></a>247</td><td></td><td></td><td></td><td></td><td class="s">         #   3 days ago at midnight UTC</td></tr>
<tr><td class="h"><a name="248"></a>248</td><td></td><td></td><td></td><td></td><td class="s">         # (we already stripped off the 'at midnight UTC' above).</td></tr>
<tr><td class="h"><a name="249"></a>249</td><td></td><td></td><td></td><td></td><td class="s">         #</td></tr>
<tr><td class="h"><a name="250"></a>250</td><td></td><td></td><td></td><td></td><td class="s">         # We also need to handle the sitution of a delta and a timezone.</td></tr>
<tr><td class="h"><a name="251"></a>251</td><td></td><td></td><td></td><td></td><td class="s">         #   in 2 hours EST</td></tr>
<tr><td class="h"><a name="252"></a>252</td><td></td><td></td><td></td><td></td><td class="s">         #   in 2 days EST</td></tr>
<tr><td class="h"><a name="253"></a>253</td><td></td><td></td><td></td><td></td><td class="s">         # but only if no time was entered.</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 class="c3">6</td><td class="c3"><span title="Avg 517ns">3µs</span></td><td></td><td></td><td class="s">         if (! exists $opts{'nodelta'}) {</td></tr>
<tr><td class="h"><a name="256"></a>256</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="257"></a>257</td><td class="c3">6</td><td class="c3"><span title="Avg 2µs">10µs</span></td><td class="c3">6</td><td class="c1">5.58ms</td><td class="s">            ($done,@tmp) =<div class="calls"><div class="calls_out">            # spent  5.58ms making 6 calls to <a href="Date-Manip-Date-pm-12-line.html#1835">Date::Manip::Date::_parse_delta</a>, avg 929µs/call</div></div></td></tr>
<tr><td class="h"><a name="258"></a>258</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;_parse_delta($string,$dow,$got_time,$h,$mn,$s,\$noupdate);</td></tr>
<tr><td class="h"><a name="259"></a>259</td><td class="c3">6</td><td class="c3"><span title="Avg 167ns">1µs</span></td><td></td><td></td><td class="s">            if (@tmp) {</td></tr>
<tr><td class="h"><a name="260"></a>260</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d,$h,$mn,$s) = @tmp;</td></tr>
<tr><td class="h"><a name="261"></a>261</td><td></td><td></td><td></td><td></td><td class="s">               $got_time = 1;</td></tr>
<tr><td class="h"><a name="262"></a>262</td><td></td><td></td><td></td><td></td><td class="s">               $dow = '';</td></tr>
<tr><td class="h"><a name="263"></a>263</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="264"></a>264</td><td class="c3">6</td><td class="c3"><span title="Avg 200ns">1µs</span></td><td></td><td></td><td class="s">            last PARSE  if ($done);</td></tr>
<tr><td class="h"><a name="265"></a>265</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="266"></a>266</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="267"></a>267</td><td></td><td></td><td></td><td></td><td class="s">         # Parse holidays</td></tr>
<tr><td class="h"><a name="268"></a>268</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="269"></a>269</td><td class="c3">6</td><td class="c3"><span title="Avg 367ns">2µs</span></td><td></td><td></td><td class="s">         unless (exists $opts{'noholidays'}) {</td></tr>
<tr><td class="h"><a name="270"></a>270</td><td class="c3">6</td><td class="c3"><span title="Avg 1µs">7µs</span></td><td class="c3">6</td><td class="c3">13µs</td><td class="s">            ($done,@tmp) =<div class="calls"><div class="calls_out">            # spent    13µs making 6 calls to <a href="Date-Manip-Date-pm-12-line.html#1799">Date::Manip::Date::_parse_holidays</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="271"></a>271</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;_parse_holidays($string,\$noupdate);</td></tr>
<tr><td class="h"><a name="272"></a>272</td><td class="c3">6</td><td class="c3"><span title="Avg 83ns">500ns</span></td><td></td><td></td><td class="s">            if (@tmp) {</td></tr>
<tr><td class="h"><a name="273"></a>273</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d) = @tmp;</td></tr>
<tr><td class="h"><a name="274"></a>274</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="275"></a>275</td><td class="c3">6</td><td class="c3"><span title="Avg 2µs">14µs</span></td><td></td><td></td><td class="s">            last PARSE  if ($done);</td></tr>
<tr><td class="h"><a name="276"></a>276</td><td></td><td></td><td></td><td></td><td class="s">         }</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 class="c3">6</td><td class="c3"><span title="Avg 250ns">2µs</span></td><td></td><td></td><td class="s">         $$self{'err'} = '[parse] Invalid date string';</td></tr>
<tr><td class="h"><a name="279"></a>279</td><td class="c3">6</td><td class="c3"><span title="Avg 483ns">3µs</span></td><td></td><td></td><td class="s">         last PARSE;</td></tr>
<tr><td class="h"><a name="280"></a>280</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="281"></a>281</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="282"></a>282</td><td></td><td></td><td></td><td></td><td class="s">      # We got an error parsing this encoding of the string. It could</td></tr>
<tr><td class="h"><a name="283"></a>283</td><td></td><td></td><td></td><td></td><td class="s">      # be that it is a genuine error, or it may be that we simply</td></tr>
<tr><td class="h"><a name="284"></a>284</td><td></td><td></td><td></td><td></td><td class="s">      # need to try a different encoding. If ALL encodings fail, we'll</td></tr>
<tr><td class="h"><a name="285"></a>285</td><td></td><td></td><td></td><td></td><td class="s">      # return the error from the first one.</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 class="c0">2436</td><td class="c1"><span title="Avg 214ns">521µs</span></td><td></td><td></td><td class="s">      if ($$self{'err'}) {</td></tr>
<tr><td class="h"><a name="288"></a>288</td><td class="c3">6</td><td class="c3"><span title="Avg 267ns">2µs</span></td><td></td><td></td><td class="s">         if (! $firsterr) {</td></tr>
<tr><td class="h"><a name="289"></a>289</td><td></td><td></td><td></td><td></td><td class="s">            $firsterr = $$self{'err'};</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 class="c3">6</td><td class="c3"><span title="Avg 267ns">2µs</span></td><td></td><td></td><td class="s">         next ENCODING;</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"></td></tr>
<tr><td class="h"><a name="294"></a>294</td><td></td><td></td><td></td><td></td><td class="s">      # If we didn't get an error, this is the string to use.</td></tr>
<tr><td class="h"><a name="295"></a>295</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="296"></a>296</td><td class="c0">2430</td><td class="c0"><span title="Avg 358ns">871µs</span></td><td></td><td></td><td class="s">      last ENCODING;</td></tr>
<tr><td class="h"><a name="297"></a>297</td><td></td><td></td><td></td><td></td><td class="s">   }</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 class="c0">2433</td><td class="c2"><span title="Avg 140ns">341µs</span></td><td></td><td></td><td class="s">   if ($$self{'err'}) {</td></tr>
<tr><td class="h"><a name="300"></a>300</td><td class="c3">3</td><td class="c3"><span title="Avg 300ns">900ns</span></td><td></td><td></td><td class="s">      $$self{'err'} = $firsterr;</td></tr>
<tr><td class="h"><a name="301"></a>301</td><td class="c3">3</td><td class="c3"><span title="Avg 2µs">5µs</span></td><td></td><td></td><td class="s">      return 1;</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"></td></tr>
<tr><td class="h"><a name="304"></a>304</td><td></td><td></td><td></td><td></td><td class="s">   # Make sure that a time is set</td></tr>
<tr><td class="h"><a name="305"></a>305</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="306"></a>306</td><td class="c0">2430</td><td class="c3"><span title="Avg 109ns">264µs</span></td><td></td><td></td><td class="s">   if (! $got_time) {</td></tr>
<tr><td class="h"><a name="307"></a>307</td><td></td><td></td><td></td><td></td><td class="s">      if ($default_time) {</td></tr>
<tr><td class="h"><a name="308"></a>308</td><td></td><td></td><td></td><td></td><td class="s">         if ($dmb-&gt;_config('defaulttime') eq 'midnight') {</td></tr>
<tr><td class="h"><a name="309"></a>309</td><td></td><td></td><td></td><td></td><td class="s">            ($h,$mn,$s) = (0,0,0);</td></tr>
<tr><td class="h"><a name="310"></a>310</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="311"></a>311</td><td></td><td></td><td></td><td></td><td class="s">            ($h,$mn,$s) = $dmt-&gt;_now('time',$noupdate);</td></tr>
<tr><td class="h"><a name="312"></a>312</td><td></td><td></td><td></td><td></td><td class="s">            $noupdate = 1;</td></tr>
<tr><td class="h"><a name="313"></a>313</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="314"></a>314</td><td></td><td></td><td></td><td></td><td class="s">         $got_time = 1;</td></tr>
<tr><td class="h"><a name="315"></a>315</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="316"></a>316</td><td></td><td></td><td></td><td></td><td class="s">         ($h,$mn,$s) = $self-&gt;_def_time(undef,undef,undef,\$noupdate);</td></tr>
<tr><td class="h"><a name="317"></a>317</td><td></td><td></td><td></td><td></td><td class="s">      }</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"></td></tr>
<tr><td class="h"><a name="320"></a>320</td><td class="c0">2430</td><td class="c0"><span title="Avg 310ns">754µs</span></td><td></td><td></td><td class="s">   $$self{'data'}{'set'} = 2;</td></tr>
<tr><td class="h"><a name="321"></a>321</td><td class="c0">2430</td><td class="c0"><span title="Avg 2µs">5.54ms</span></td><td class="c0">2430</td><td class="c0">1.70s</td><td class="s">   return $self-&gt;_parse_check('parse',$instring,<div class="calls"><div class="calls_out">   # spent  1.70s making 2430 calls to <a href="Date-Manip-Date-pm-12-line.html#936">Date::Manip::Date::_parse_check</a>, avg 701µs/call</div></div></td></tr>
<tr><td class="h"><a name="322"></a>322</td><td></td><td></td><td></td><td></td><td class="s">                              $y,$m,$d,$h,$mn,$s,$dow,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="323"></a>323</td><td></td><td></td><td></td><td></td><td class="s">}</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">sub parse_time {</td></tr>
<tr><td class="h"><a name="326"></a>326</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$string,@opts) = @_;</td></tr>
<tr><td class="h"><a name="327"></a>327</td><td></td><td></td><td></td><td></td><td class="s">   my %opts     = map { $_,1 } @opts;</td></tr>
<tr><td class="h"><a name="328"></a>328</td><td></td><td></td><td></td><td></td><td class="s">   my $noupdate = 0;</td></tr>
<tr><td class="h"><a name="329"></a>329</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="330"></a>330</td><td></td><td></td><td></td><td></td><td class="s">   if (! $string) {</td></tr>
<tr><td class="h"><a name="331"></a>331</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[parse_time] Empty time string';</td></tr>
<tr><td class="h"><a name="332"></a>332</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="333"></a>333</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="334"></a>334</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="335"></a>335</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s);</td></tr>
<tr><td class="h"><a name="336"></a>336</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="337"></a>337</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}) {</td></tr>
<tr><td class="h"><a name="338"></a>338</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="339"></a>339</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="340"></a>340</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="341"></a>341</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s) = @{ $$self{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="342"></a>342</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="343"></a>343</td><td></td><td></td><td></td><td></td><td class="s">      my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="344"></a>344</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s) = $dmt-&gt;_now('now',$noupdate);</td></tr>
<tr><td class="h"><a name="345"></a>345</td><td></td><td></td><td></td><td></td><td class="s">      $noupdate = 1;</td></tr>
<tr><td class="h"><a name="346"></a>346</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="347"></a>347</td><td></td><td></td><td></td><td></td><td class="s">   my($tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="348"></a>348</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="349"></a>349</td><td></td><td></td><td></td><td></td><td class="s">   ($h,$mn,$s,$tzstring,$zone,$abb,$off) =</td></tr>
<tr><td class="h"><a name="350"></a>350</td><td></td><td></td><td></td><td></td><td class="s">     $self-&gt;_parse_time('parse_time',$string,\$noupdate,%opts);</td></tr>
<tr><td class="h"><a name="351"></a>351</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="352"></a>352</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if ($$self{'err'});</td></tr>
<tr><td class="h"><a name="353"></a>353</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="354"></a>354</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'set'} = 2;</td></tr>
<tr><td class="h"><a name="355"></a>355</td><td></td><td></td><td></td><td></td><td class="s">   return $self-&gt;_parse_check('parse_time','',</td></tr>
<tr><td class="h"><a name="356"></a>356</td><td></td><td></td><td></td><td></td><td class="s">                              $y,$m,$d,$h,$mn,$s,'',$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="357"></a>357</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="358"></a>358</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="359"></a>359</td><td></td><td></td><td></td><td></td><td class="s">sub parse_date {</td></tr>
<tr><td class="h"><a name="360"></a>360</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$string,@opts) = @_;</td></tr>
<tr><td class="h"><a name="361"></a>361</td><td></td><td></td><td></td><td></td><td class="s">   my %opts     = map { $_,1 } @opts;</td></tr>
<tr><td class="h"><a name="362"></a>362</td><td></td><td></td><td></td><td></td><td class="s">   my $noupdate = 0;</td></tr>
<tr><td class="h"><a name="363"></a>363</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="364"></a>364</td><td></td><td></td><td></td><td></td><td class="s">   if (! $string) {</td></tr>
<tr><td class="h"><a name="365"></a>365</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[parse_date] Empty date string';</td></tr>
<tr><td class="h"><a name="366"></a>366</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="367"></a>367</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="368"></a>368</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="369"></a>369</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="370"></a>370</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="371"></a>371</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s);</td></tr>
<tr><td class="h"><a name="372"></a>372</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="373"></a>373</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}) {</td></tr>
<tr><td class="h"><a name="374"></a>374</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="375"></a>375</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="376"></a>376</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="377"></a>377</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s) = @{ $$self{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="378"></a>378</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="379"></a>379</td><td></td><td></td><td></td><td></td><td class="s">      ($h,$mn,$s) = (0,0,0);</td></tr>
<tr><td class="h"><a name="380"></a>380</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="381"></a>381</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="382"></a>382</td><td></td><td></td><td></td><td></td><td class="s">   # Put parse in a simple loop for an easy exit.</td></tr>
<tr><td class="h"><a name="383"></a>383</td><td></td><td></td><td></td><td></td><td class="s">   my($done,@tmp,$dow);</td></tr>
<tr><td class="h"><a name="384"></a>384</td><td></td><td></td><td></td><td></td><td class="s">   PARSE:</td></tr>
<tr><td class="h"><a name="385"></a>385</td><td></td><td></td><td></td><td></td><td class="s">   {</td></tr>
<tr><td class="h"><a name="386"></a>386</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="387"></a>387</td><td></td><td></td><td></td><td></td><td class="s">      # Parse ISO 8601 dates now</td></tr>
<tr><td class="h"><a name="388"></a>388</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="389"></a>389</td><td></td><td></td><td></td><td></td><td class="s">      unless (exists $opts{'noiso8601'}) {</td></tr>
<tr><td class="h"><a name="390"></a>390</td><td></td><td></td><td></td><td></td><td class="s">         ($done,@tmp) = $self-&gt;_parse_date_iso8601($string,\$noupdate);</td></tr>
<tr><td class="h"><a name="391"></a>391</td><td></td><td></td><td></td><td></td><td class="s">         if ($done) {</td></tr>
<tr><td class="h"><a name="392"></a>392</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @tmp;</td></tr>
<tr><td class="h"><a name="393"></a>393</td><td></td><td></td><td></td><td></td><td class="s">            last PARSE;</td></tr>
<tr><td class="h"><a name="394"></a>394</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="395"></a>395</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="396"></a>396</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="397"></a>397</td><td></td><td></td><td></td><td></td><td class="s">      (@tmp) = $self-&gt;_parse_date($string,undef,\$noupdate,%opts);</td></tr>
<tr><td class="h"><a name="398"></a>398</td><td></td><td></td><td></td><td></td><td class="s">      if (@tmp) {</td></tr>
<tr><td class="h"><a name="399"></a>399</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$dow) = @tmp;</td></tr>
<tr><td class="h"><a name="400"></a>400</td><td></td><td></td><td></td><td></td><td class="s">         last PARSE;</td></tr>
<tr><td class="h"><a name="401"></a>401</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="402"></a>402</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="403"></a>403</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[parse_date] Invalid date string';</td></tr>
<tr><td class="h"><a name="404"></a>404</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="405"></a>405</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="406"></a>406</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="407"></a>407</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if ($$self{'err'});</td></tr>
<tr><td class="h"><a name="408"></a>408</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="409"></a>409</td><td></td><td></td><td></td><td></td><td class="s">   $y = $dmt-&gt;_fix_year($y);</td></tr>
<tr><td class="h"><a name="410"></a>410</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="411"></a>411</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'set'} = 2;</td></tr>
<tr><td class="h"><a name="412"></a>412</td><td></td><td></td><td></td><td></td><td class="s">   return $self-&gt;_parse_check('parse_date','',$y,$m,$d,$h,$mn,$s,$dow);</td></tr>
<tr><td class="h"><a name="413"></a>413</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="414"></a>414</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="415"></a>415</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 127ms (26.7+101) within Date::Manip::Date::_parse_date which was called 2442 times, avg 52µs/call:
# 2436 times (26.7ms+100ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#211">line 211</a>, avg 52µs/call
#    6 times (61µs+122µs) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#229">line 229</a>, avg 30µs/call</div></div>sub _parse_date {</td></tr>
<tr><td class="h"><a name="416"></a>416</td><td class="c0">2442</td><td class="c0"><span title="Avg 368ns">898µs</span></td><td></td><td></td><td class="s">   my($self,$string,$dow,$noupdate,%opts) = @_;</td></tr>
<tr><td class="h"><a name="417"></a>417</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="418"></a>418</td><td></td><td></td><td></td><td></td><td class="s">   # There's lots of ways that commas may be included. Remove</td></tr>
<tr><td class="h"><a name="419"></a>419</td><td></td><td></td><td></td><td></td><td class="s">   # them.</td></tr>
<tr><td class="h"><a name="420"></a>420</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="421"></a>421</td><td></td><td></td><td></td><td></td><td class="s">   # Also remove some words we should ignore.</td></tr>
<tr><td class="h"><a name="422"></a>422</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="423"></a>423</td><td class="c0">2442</td><td class="c0"><span title="Avg 1µs">2.66ms</span></td><td class="c0">2442</td><td class="c3">508µs</td><td class="s">   $string =~ s/,/ /g;<div class="calls"><div class="calls_out">   # spent   508µs making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 208ns/call</div></div></td></tr>
<tr><td class="h"><a name="424"></a>424</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="425"></a>425</td><td class="c0">2442</td><td class="c2"><span title="Avg 132ns">323µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="426"></a>426</td><td class="c0">2442</td><td class="c3"><span title="Avg 117ns">285µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="427"></a>427</td><td class="c0">2442</td><td class="c0"><span title="Avg 567ns">1.38ms</span></td><td class="c3">1</td><td class="c3">19µs</td><td class="s">   my $ign = (exists $$dmb{'data'}{'rx'}{'other'}{'ignore'} ?<div class="calls"><div class="calls_out">   # spent    19µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="428"></a>428</td><td></td><td></td><td></td><td></td><td class="s">              $$dmb{'data'}{'rx'}{'other'}{'ignore'} :</td></tr>
<tr><td class="h"><a name="429"></a>429</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;_other_rx('ignore'));</td></tr>
<tr><td class="h"><a name="430"></a>430</td><td class="c0">2442</td><td class="c0"><span title="Avg 3µs">7.92ms</span></td><td class="c0">4884</td><td class="c3">3.92ms</td><td class="s">   $string =~ s/$ign/ /g;<div class="calls"><div class="calls_out">   # spent  2.83ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 1µs/call
   # spent  1.09ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 446ns/call</div></div></td></tr>
<tr><td class="h"><a name="431"></a>431</td><td class="c0">2444</td><td class="c0"><span title="Avg 2µs">5.78ms</span></td><td class="c0">2443</td><td class="c3">678µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 218µs (82+135) within Date::Manip::Date::BEGIN@431 which was called:
#    once (82µs+135µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#431">line 431</a></div></div>   my $of  = $+{'of'};<div class="calls"><div class="calls_out">   # spent   460µs making 2442 calls to <a href="dm5dm6_ex3-1-line.html#Tie__Hash__NamedCapture__FETCH">Tie::Hash::NamedCapture::FETCH</a>, avg 189ns/call
   # spent   218µs making    1 call to <a href="Date-Manip-Date-pm-12-line.html#431">Date::Manip::Date::BEGIN@431</a></div></div></td></tr>
<tr><td class="h"><a name="432"></a>432</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="433"></a>433</td><td class="c0">2442</td><td class="c0"><span title="Avg 2µs">4.86ms</span></td><td class="c0">2442</td><td class="c3">2.65ms</td><td class="s">   $string =~ s/\s*$//;<div class="calls"><div class="calls_out">   # spent  2.65ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="434"></a>434</td><td class="c0">2442</td><td class="c3"><span title="Avg 76ns">187µs</span></td><td></td><td></td><td class="s">   return ()  if (! $string);</td></tr>
<tr><td class="h"><a name="435"></a>435</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="436"></a>436</td><td class="c0">2442</td><td class="c3"><span title="Avg 117ns">287µs</span></td><td></td><td></td><td class="s">   my($done,$y,$m,$d,@tmp);</td></tr>
<tr><td class="h"><a name="437"></a>437</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="438"></a>438</td><td></td><td></td><td></td><td></td><td class="s">   # Put parse in a simple loop for an easy exit.</td></tr>
<tr><td class="h"><a name="439"></a>439</td><td></td><td></td><td></td><td></td><td class="s">   PARSE:</td></tr>
<tr><td class="h"><a name="440"></a>440</td><td></td><td></td><td></td><td></td><td class="s">   {</td></tr>
<tr><td class="h"><a name="441"></a>441</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="442"></a>442</td><td></td><td></td><td></td><td></td><td class="s">      # Parse (and remove) the day of week. Also, handle the simple DoW</td></tr>
<tr><td class="h"><a name="443"></a>443</td><td></td><td></td><td></td><td></td><td class="s">      # formats.</td></tr>
<tr><td class="h"><a name="444"></a>444</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="445"></a>445</td><td class="c0">4884</td><td class="c0"><span title="Avg 163ns">796µs</span></td><td></td><td></td><td class="s">      unless (exists $opts{'nodow'}) {</td></tr>
<tr><td class="h"><a name="446"></a>446</td><td class="c0">2442</td><td class="c2"><span title="Avg 134ns">327µs</span></td><td></td><td></td><td class="s">         if (! defined($dow)) {</td></tr>
<tr><td class="h"><a name="447"></a>447</td><td></td><td></td><td></td><td></td><td class="s">            ($done,@tmp) = $self-&gt;_parse_dow($string,$noupdate);</td></tr>
<tr><td class="h"><a name="448"></a>448</td><td></td><td></td><td></td><td></td><td class="s">            if (@tmp) {</td></tr>
<tr><td class="h"><a name="449"></a>449</td><td></td><td></td><td></td><td></td><td class="s">               if ($done) {</td></tr>
<tr><td class="h"><a name="450"></a>450</td><td></td><td></td><td></td><td></td><td class="s">                  ($y,$m,$d) = @tmp;</td></tr>
<tr><td class="h"><a name="451"></a>451</td><td></td><td></td><td></td><td></td><td class="s">                  last PARSE;</td></tr>
<tr><td class="h"><a name="452"></a>452</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="453"></a>453</td><td></td><td></td><td></td><td></td><td class="s">                  ($string,$dow) = @tmp;</td></tr>
<tr><td class="h"><a name="454"></a>454</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="455"></a>455</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="456"></a>456</td><td></td><td></td><td></td><td></td><td class="s">            $dow = 0  if (! $dow);</td></tr>
<tr><td class="h"><a name="457"></a>457</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="458"></a>458</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="459"></a>459</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="460"></a>460</td><td></td><td></td><td></td><td></td><td class="s">      # Parse common dates</td></tr>
<tr><td class="h"><a name="461"></a>461</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="462"></a>462</td><td class="c0">2442</td><td class="c3"><span title="Avg 109ns">266µs</span></td><td></td><td></td><td class="s">      unless (exists $opts{'nocommon'}) {</td></tr>
<tr><td class="h"><a name="463"></a>463</td><td class="c0">2442</td><td class="c0"><span title="Avg 1µs">2.57ms</span></td><td class="c0">2442</td><td class="c0">90.7ms</td><td class="s">         (@tmp) = $self-&gt;_parse_date_common($string,$noupdate);<div class="calls"><div class="calls_out">         # spent  90.7ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#1697">Date::Manip::Date::_parse_date_common</a>, avg 37µs/call</div></div></td></tr>
<tr><td class="h"><a name="464"></a>464</td><td class="c0">2442</td><td class="c2"><span title="Avg 148ns">360µs</span></td><td></td><td></td><td class="s">         if (@tmp) {</td></tr>
<tr><td class="h"><a name="465"></a>465</td><td class="c0">2430</td><td class="c0"><span title="Avg 294ns">714µs</span></td><td></td><td></td><td class="s">            ($y,$m,$d) = @tmp;</td></tr>
<tr><td class="h"><a name="466"></a>466</td><td class="c0">2430</td><td class="c0"><span title="Avg 396ns">963µs</span></td><td></td><td></td><td class="s">            last PARSE;</td></tr>
<tr><td class="h"><a name="467"></a>467</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="468"></a>468</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="469"></a>469</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="470"></a>470</td><td></td><td></td><td></td><td></td><td class="s">      # Parse less common dates</td></tr>
<tr><td class="h"><a name="471"></a>471</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="472"></a>472</td><td class="c3">12</td><td class="c3"><span title="Avg 242ns">3µs</span></td><td></td><td></td><td class="s">      unless (exists $opts{'noother'}) {</td></tr>
<tr><td class="h"><a name="473"></a>473</td><td class="c3">12</td><td class="c3"><span title="Avg 1µs">13µs</span></td><td class="c1">12</td><td class="c3">2.34ms</td><td class="s">         (@tmp) = $self-&gt;_parse_date_other($string,$dow,$of,$noupdate);<div class="calls"><div class="calls_out">         # spent  2.34ms making 12 calls to <a href="Date-Manip-Date-pm-12-line.html#1978">Date::Manip::Date::_parse_date_other</a>, avg 195µs/call</div></div></td></tr>
<tr><td class="h"><a name="474"></a>474</td><td class="c3">12</td><td class="c3"><span title="Avg 150ns">2µs</span></td><td></td><td></td><td class="s">         if (@tmp) {</td></tr>
<tr><td class="h"><a name="475"></a>475</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$dow) = @tmp;</td></tr>
<tr><td class="h"><a name="476"></a>476</td><td></td><td></td><td></td><td></td><td class="s">            last PARSE;</td></tr>
<tr><td class="h"><a name="477"></a>477</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="478"></a>478</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="479"></a>479</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="480"></a>480</td><td class="c3">12</td><td class="c3"><span title="Avg 1µs">17µs</span></td><td></td><td></td><td class="s">      return ();</td></tr>
<tr><td class="h"><a name="481"></a>481</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="482"></a>482</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="483"></a>483</td><td class="c0">2430</td><td class="c0"><span title="Avg 2µs">4.46ms</span></td><td></td><td></td><td class="s">   return($y,$m,$d,$dow);</td></tr>
<tr><td class="h"><a name="484"></a>484</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="485"></a>485</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="486"></a>486</td><td></td><td></td><td></td><td></td><td class="s">sub parse_format {</td></tr>
<tr><td class="h"><a name="487"></a>487</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$format,$string) = @_;</td></tr>
<tr><td class="h"><a name="488"></a>488</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="489"></a>489</td><td></td><td></td><td></td><td></td><td class="s">   my $noupdate = 0;</td></tr>
<tr><td class="h"><a name="490"></a>490</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="491"></a>491</td><td></td><td></td><td></td><td></td><td class="s">   if (! $string) {</td></tr>
<tr><td class="h"><a name="492"></a>492</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[parse_format] Empty date string';</td></tr>
<tr><td class="h"><a name="493"></a>493</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="494"></a>494</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="495"></a>495</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="496"></a>496</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="497"></a>497</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="498"></a>498</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="499"></a>499</td><td></td><td></td><td></td><td></td><td class="s">   my($err,$re) = $self-&gt;_format_regexp($format);</td></tr>
<tr><td class="h"><a name="500"></a>500</td><td></td><td></td><td></td><td></td><td class="s">   return $err  if ($err);</td></tr>
<tr><td class="h"><a name="501"></a>501</td><td></td><td></td><td></td><td></td><td class="s">   return 1     if ($string !~ $re);</td></tr>
<tr><td class="h"><a name="502"></a>502</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="503"></a>503</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s,</td></tr>
<tr><td class="h"><a name="504"></a>504</td><td></td><td></td><td></td><td></td><td class="s">      $mon_name,$mon_abb,$dow_name,$dow_abb,$dow_char,$dow_num,</td></tr>
<tr><td class="h"><a name="505"></a>505</td><td></td><td></td><td></td><td></td><td class="s">      $doy,$nth,$ampm,$epochs,$epocho,</td></tr>
<tr><td class="h"><a name="506"></a>506</td><td></td><td></td><td></td><td></td><td class="s">      $tzstring,$off,$abb,$zone,</td></tr>
<tr><td class="h"><a name="507"></a>507</td><td></td><td></td><td></td><td></td><td class="s">      $g,$w,$l,$u) =</td></tr>
<tr><td class="h"><a name="508"></a>508</td><td></td><td></td><td></td><td></td><td class="s">        @+{qw(y m d h mn s</td></tr>
<tr><td class="h"><a name="509"></a>509</td><td></td><td></td><td></td><td></td><td class="s">              mon_name mon_abb dow_name dow_abb dow_char dow_num doy</td></tr>
<tr><td class="h"><a name="510"></a>510</td><td></td><td></td><td></td><td></td><td class="s">              nth ampm epochs epocho tzstring off abb zone g w l u)};</td></tr>
<tr><td class="h"><a name="511"></a>511</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="512"></a>512</td><td></td><td></td><td></td><td></td><td class="s">   while (1) {</td></tr>
<tr><td class="h"><a name="513"></a>513</td><td></td><td></td><td></td><td></td><td class="s">      # Get y/m/d/h/mn/s from:</td></tr>
<tr><td class="h"><a name="514"></a>514</td><td></td><td></td><td></td><td></td><td class="s">      #     $epochs,$epocho</td></tr>
<tr><td class="h"><a name="515"></a>515</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="516"></a>516</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($epochs)) {</td></tr>
<tr><td class="h"><a name="517"></a>517</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) = @{ $dmb-&gt;secs_since_1970($epochs) };</td></tr>
<tr><td class="h"><a name="518"></a>518</td><td></td><td></td><td></td><td></td><td class="s">         my $z;</td></tr>
<tr><td class="h"><a name="519"></a>519</td><td></td><td></td><td></td><td></td><td class="s">         if ($zone) {</td></tr>
<tr><td class="h"><a name="520"></a>520</td><td></td><td></td><td></td><td></td><td class="s">            $z = $dmt-&gt;_zone($zone);</td></tr>
<tr><td class="h"><a name="521"></a>521</td><td></td><td></td><td></td><td></td><td class="s">            return 'Invalid zone'  if (! $z);</td></tr>
<tr><td class="h"><a name="522"></a>522</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($abb  ||  $off) {</td></tr>
<tr><td class="h"><a name="523"></a>523</td><td></td><td></td><td></td><td></td><td class="s">            my $offset = $dmb-&gt;_delta_convert('offset',$off);</td></tr>
<tr><td class="h"><a name="524"></a>524</td><td></td><td></td><td></td><td></td><td class="s">            $z = $dmt-&gt;__zone([],$offset,'',$abb,'');</td></tr>
<tr><td class="h"><a name="525"></a>525</td><td></td><td></td><td></td><td></td><td class="s">            if (! $z) {</td></tr>
<tr><td class="h"><a name="526"></a>526</td><td></td><td></td><td></td><td></td><td class="s">               $z = $dmt-&gt;__zone([],$offset,$abb,'','');</td></tr>
<tr><td class="h"><a name="527"></a>527</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="528"></a>528</td><td></td><td></td><td></td><td></td><td class="s">            return 'Invalid zone'  if (! $z);</td></tr>
<tr><td class="h"><a name="529"></a>529</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="530"></a>530</td><td></td><td></td><td></td><td></td><td class="s">            $z = $dmt-&gt;_now('tz',$noupdate);</td></tr>
<tr><td class="h"><a name="531"></a>531</td><td></td><td></td><td></td><td></td><td class="s">            $noupdate = 1;</td></tr>
<tr><td class="h"><a name="532"></a>532</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="533"></a>533</td><td></td><td></td><td></td><td></td><td class="s">         my($err,$date) = $dmt-&gt;convert_from_gmt([$y,$m,$d,$h,$mn,$s],$z);</td></tr>
<tr><td class="h"><a name="534"></a>534</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) = @$date;</td></tr>
<tr><td class="h"><a name="535"></a>535</td><td></td><td></td><td></td><td></td><td class="s">         last;</td></tr>
<tr><td class="h"><a name="536"></a>536</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="537"></a>537</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="538"></a>538</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($epocho)) {</td></tr>
<tr><td class="h"><a name="539"></a>539</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) = @{ $dmb-&gt;secs_since_1970($epocho) };</td></tr>
<tr><td class="h"><a name="540"></a>540</td><td></td><td></td><td></td><td></td><td class="s">         last;</td></tr>
<tr><td class="h"><a name="541"></a>541</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="542"></a>542</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="543"></a>543</td><td></td><td></td><td></td><td></td><td class="s">      # Get y/m/d from:</td></tr>
<tr><td class="h"><a name="544"></a>544</td><td></td><td></td><td></td><td></td><td class="s">      #     $y,$m,$d,</td></tr>
<tr><td class="h"><a name="545"></a>545</td><td></td><td></td><td></td><td></td><td class="s">      #     $mon_name,$mon_abb</td></tr>
<tr><td class="h"><a name="546"></a>546</td><td></td><td></td><td></td><td></td><td class="s">      #     $doy,$nth</td></tr>
<tr><td class="h"><a name="547"></a>547</td><td></td><td></td><td></td><td></td><td class="s">      #     $g/$w,$l/$u</td></tr>
<tr><td class="h"><a name="548"></a>548</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="549"></a>549</td><td></td><td></td><td></td><td></td><td class="s">      if ($mon_name) {</td></tr>
<tr><td class="h"><a name="550"></a>550</td><td></td><td></td><td></td><td></td><td class="s">         $m = $$dmb{'data'}{'wordmatch'}{'month_name'}{lc($mon_name)};</td></tr>
<tr><td class="h"><a name="551"></a>551</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($mon_abb) {</td></tr>
<tr><td class="h"><a name="552"></a>552</td><td></td><td></td><td></td><td></td><td class="s">         $m = $$dmb{'data'}{'wordmatch'}{'month_abb'}{lc($mon_abb)};</td></tr>
<tr><td class="h"><a name="553"></a>553</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="554"></a>554</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="555"></a>555</td><td></td><td></td><td></td><td></td><td class="s">      if ($nth) {</td></tr>
<tr><td class="h"><a name="556"></a>556</td><td></td><td></td><td></td><td></td><td class="s">         $d = $$dmb{'data'}{'wordmatch'}{'nth'}{lc($nth)};</td></tr>
<tr><td class="h"><a name="557"></a>557</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="558"></a>558</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="559"></a>559</td><td></td><td></td><td></td><td></td><td class="s">      if ($doy) {</td></tr>
<tr><td class="h"><a name="560"></a>560</td><td></td><td></td><td></td><td></td><td class="s">         $y         = $dmt-&gt;_now('y',$noupdate)  if (! $y);</td></tr>
<tr><td class="h"><a name="561"></a>561</td><td></td><td></td><td></td><td></td><td class="s">         $noupdate  = 1;</td></tr>
<tr><td class="h"><a name="562"></a>562</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = @{ $dmb-&gt;day_of_year($y,$doy) };</td></tr>
<tr><td class="h"><a name="563"></a>563</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="564"></a>564</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($g) {</td></tr>
<tr><td class="h"><a name="565"></a>565</td><td></td><td></td><td></td><td></td><td class="s">         $y         = $dmt-&gt;_now('y',$noupdate)  if (! $y);</td></tr>
<tr><td class="h"><a name="566"></a>566</td><td></td><td></td><td></td><td></td><td class="s">         $noupdate  = 1;</td></tr>
<tr><td class="h"><a name="567"></a>567</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = @{ $dmb-&gt;_week_of_year($g,$w,1) };</td></tr>
<tr><td class="h"><a name="568"></a>568</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="569"></a>569</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($l) {</td></tr>
<tr><td class="h"><a name="570"></a>570</td><td></td><td></td><td></td><td></td><td class="s">         $y         = $dmt-&gt;_now('y',$noupdate)  if (! $y);</td></tr>
<tr><td class="h"><a name="571"></a>571</td><td></td><td></td><td></td><td></td><td class="s">         $noupdate  = 1;</td></tr>
<tr><td class="h"><a name="572"></a>572</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = @{ $dmb-&gt;_week_of_year($l,$u,7) };</td></tr>
<tr><td class="h"><a name="573"></a>573</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="574"></a>574</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($m) {</td></tr>
<tr><td class="h"><a name="575"></a>575</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,\$noupdate);</td></tr>
<tr><td class="h"><a name="576"></a>576</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="577"></a>577</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="578"></a>578</td><td></td><td></td><td></td><td></td><td class="s">      # Get h/mn/s from:</td></tr>
<tr><td class="h"><a name="579"></a>579</td><td></td><td></td><td></td><td></td><td class="s">      #     $h,$mn,$s,$ampm</td></tr>
<tr><td class="h"><a name="580"></a>580</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="581"></a>581</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($h)) {</td></tr>
<tr><td class="h"><a name="582"></a>582</td><td></td><td></td><td></td><td></td><td class="s">         ($h,$mn,$s) = $self-&gt;_def_time($h,$mn,$s,\$noupdate);</td></tr>
<tr><td class="h"><a name="583"></a>583</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="584"></a>584</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="585"></a>585</td><td></td><td></td><td></td><td></td><td class="s">      if ($ampm) {</td></tr>
<tr><td class="h"><a name="586"></a>586</td><td></td><td></td><td></td><td></td><td class="s">         if ($$dmb{'data'}{'wordmatch'}{'ampm'}{lc($ampm)} == 2) {</td></tr>
<tr><td class="h"><a name="587"></a>587</td><td></td><td></td><td></td><td></td><td class="s">            # pm times</td></tr>
<tr><td class="h"><a name="588"></a>588</td><td></td><td></td><td></td><td></td><td class="s">            $h+=12  unless ($h==12);</td></tr>
<tr><td class="h"><a name="589"></a>589</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="590"></a>590</td><td></td><td></td><td></td><td></td><td class="s">            # am times</td></tr>
<tr><td class="h"><a name="591"></a>591</td><td></td><td></td><td></td><td></td><td class="s">            $h=0  if ($h==12);</td></tr>
<tr><td class="h"><a name="592"></a>592</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="593"></a>593</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="594"></a>594</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="595"></a>595</td><td></td><td></td><td></td><td></td><td class="s">      # Get dow from:</td></tr>
<tr><td class="h"><a name="596"></a>596</td><td></td><td></td><td></td><td></td><td class="s">      #     $dow_name,$dow_abb,$dow_char,$dow_num</td></tr>
<tr><td class="h"><a name="597"></a>597</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="598"></a>598</td><td></td><td></td><td></td><td></td><td class="s">      if ($dow_name) {</td></tr>
<tr><td class="h"><a name="599"></a>599</td><td></td><td></td><td></td><td></td><td class="s">         $dow_num = $$dmb{'data'}{'wordmatch'}{'day_name'}{lc($dow_name)};</td></tr>
<tr><td class="h"><a name="600"></a>600</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($dow_abb) {</td></tr>
<tr><td class="h"><a name="601"></a>601</td><td></td><td></td><td></td><td></td><td class="s">         $dow_num = $$dmb{'data'}{'wordmatch'}{'day_abb'}{lc($dow_abb)};</td></tr>
<tr><td class="h"><a name="602"></a>602</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($dow_char) {</td></tr>
<tr><td class="h"><a name="603"></a>603</td><td></td><td></td><td></td><td></td><td class="s">         $dow_num = $$dmb{'data'}{'wordmatch'}{'day_char'}{lc($dow_char)};</td></tr>
<tr><td class="h"><a name="604"></a>604</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="605"></a>605</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="606"></a>606</td><td></td><td></td><td></td><td></td><td class="s">      last;</td></tr>
<tr><td class="h"><a name="607"></a>607</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="608"></a>608</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="609"></a>609</td><td></td><td></td><td></td><td></td><td class="s">   if (! $m) {</td></tr>
<tr><td class="h"><a name="610"></a>610</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d) = $dmt-&gt;_now('now',$noupdate);</td></tr>
<tr><td class="h"><a name="611"></a>611</td><td></td><td></td><td></td><td></td><td class="s">      $noupdate = 1;</td></tr>
<tr><td class="h"><a name="612"></a>612</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="613"></a>613</td><td></td><td></td><td></td><td></td><td class="s">   if (! defined($h)) {</td></tr>
<tr><td class="h"><a name="614"></a>614</td><td></td><td></td><td></td><td></td><td class="s">      ($h,$mn,$s) = (0,0,0);</td></tr>
<tr><td class="h"><a name="615"></a>615</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="616"></a>616</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="617"></a>617</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'set'} = 2;</td></tr>
<tr><td class="h"><a name="618"></a>618</td><td></td><td></td><td></td><td></td><td class="s">   $err = $self-&gt;_parse_check('parse_format',$string,</td></tr>
<tr><td class="h"><a name="619"></a>619</td><td></td><td></td><td></td><td></td><td class="s">                              $y,$m,$d,$h,$mn,$s,$dow_num,</td></tr>
<tr><td class="h"><a name="620"></a>620</td><td></td><td></td><td></td><td></td><td class="s">                              $tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="621"></a>621</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="622"></a>622</td><td></td><td></td><td></td><td></td><td class="s">   if (wantarray) {</td></tr>
<tr><td class="h"><a name="623"></a>623</td><td></td><td></td><td></td><td></td><td class="s">      my %tmp = %{ dclone(\%+) };</td></tr>
<tr><td class="h"><a name="624"></a>624</td><td></td><td></td><td></td><td></td><td class="s">      return ($err,%tmp);</td></tr>
<tr><td class="h"><a name="625"></a>625</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="626"></a>626</td><td></td><td></td><td></td><td></td><td class="s">   return $err;</td></tr>
<tr><td class="h"><a name="627"></a>627</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="628"></a>628</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="629"></a>629</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 18µs within Date::Manip::Date::BEGIN@629 which was called:
#    once (18µs+0s) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#930">line 930</a></div></div>BEGIN {</td></tr>
<tr><td class="h"><a name="630"></a>630</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">   my %y_form   = map { $_,1 } qw( Y y s o G L );</td></tr>
<tr><td class="h"><a name="631"></a>631</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">   my %m_form   = map { $_,1 } qw( m f b h B j s o W U );</td></tr>
<tr><td class="h"><a name="632"></a>632</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">   my %d_form   = map { $_,1 } qw( j d e E s o W U );</td></tr>
<tr><td class="h"><a name="633"></a>633</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">   my %h_form   = map { $_,1 } qw( H I k i s o );</td></tr>
<tr><td class="h"><a name="634"></a>634</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">   my %mn_form  = map { $_,1 } qw( M s o );</td></tr>
<tr><td class="h"><a name="635"></a>635</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">   my %s_form   = map { $_,1 } qw( S s o );</td></tr>
<tr><td class="h"><a name="636"></a>636</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="637"></a>637</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">   my %dow_form = map { $_,1 } qw( v a A w );</td></tr>
<tr><td class="h"><a name="638"></a>638</td><td class="c3">1</td><td class="c3"><span title="Avg 700ns">700ns</span></td><td></td><td></td><td class="s">   my %am_form  = map { $_,1 } qw( p s o );</td></tr>
<tr><td class="h"><a name="639"></a>639</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">   my %z_form   = map { $_,1 } qw( Z z N );</td></tr>
<tr><td class="h"><a name="640"></a>640</td><td class="c3">1</td><td class="c3"><span title="Avg 700ns">700ns</span></td><td></td><td></td><td class="s">   my %mon_form = map { $_,1 } qw( b h B );</td></tr>
<tr><td class="h"><a name="641"></a>641</td><td class="c3">1</td><td class="c3"><span title="Avg 5µs">5µs</span></td><td></td><td></td><td class="s">   my %day_form = map { $_,1 } qw( v a A );</td></tr>
<tr><td class="h"><a name="642"></a>642</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="643"></a>643</td><td></td><td></td><td></td><td></td><td class="s">   sub _format_regexp {</td></tr>
<tr><td class="h"><a name="644"></a>644</td><td></td><td></td><td></td><td></td><td class="s">      my($self,$format) = @_;</td></tr>
<tr><td class="h"><a name="645"></a>645</td><td></td><td></td><td></td><td></td><td class="s">      my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="646"></a>646</td><td></td><td></td><td></td><td></td><td class="s">      my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="647"></a>647</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="648"></a>648</td><td></td><td></td><td></td><td></td><td class="s">      if (exists $$dmb{'data'}{'format'}{$format}) {</td></tr>
<tr><td class="h"><a name="649"></a>649</td><td></td><td></td><td></td><td></td><td class="s">         return @{ $$dmb{'data'}{'format'}{$format} };</td></tr>
<tr><td class="h"><a name="650"></a>650</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="651"></a>651</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="652"></a>652</td><td></td><td></td><td></td><td></td><td class="s">      my $re;</td></tr>
<tr><td class="h"><a name="653"></a>653</td><td></td><td></td><td></td><td></td><td class="s">      my $err;</td></tr>
<tr><td class="h"><a name="654"></a>654</td><td></td><td></td><td></td><td></td><td class="s">      my($y,$m,$d,$h,$mn,$s) = (0,0,0,0,0,0);</td></tr>
<tr><td class="h"><a name="655"></a>655</td><td></td><td></td><td></td><td></td><td class="s">      my($dow,$ampm,$zone,$G,$W,$L,$U) = (0,0,0,0,0,0,0);</td></tr>
<tr><td class="h"><a name="656"></a>656</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="657"></a>657</td><td></td><td></td><td></td><td></td><td class="s">      while ($format) {</td></tr>
<tr><td class="h"><a name="658"></a>658</td><td></td><td></td><td></td><td></td><td class="s">         last  if ($format eq '%');</td></tr>
<tr><td class="h"><a name="659"></a>659</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="660"></a>660</td><td></td><td></td><td></td><td></td><td class="s">         if ($format =~ s/^([^%]+)//) {</td></tr>
<tr><td class="h"><a name="661"></a>661</td><td></td><td></td><td></td><td></td><td class="s">            $re .= $1;</td></tr>
<tr><td class="h"><a name="662"></a>662</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="663"></a>663</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="664"></a>664</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="665"></a>665</td><td></td><td></td><td></td><td></td><td class="s">         $format =~ s/^%(.)//;</td></tr>
<tr><td class="h"><a name="666"></a>666</td><td></td><td></td><td></td><td></td><td class="s">         my $f = $1;</td></tr>
<tr><td class="h"><a name="667"></a>667</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="668"></a>668</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $y_form{$f}) {</td></tr>
<tr><td class="h"><a name="669"></a>669</td><td></td><td></td><td></td><td></td><td class="s">            if ($y) {</td></tr>
<tr><td class="h"><a name="670"></a>670</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Year specified multiple times';</td></tr>
<tr><td class="h"><a name="671"></a>671</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="672"></a>672</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="673"></a>673</td><td></td><td></td><td></td><td></td><td class="s">            $y = 1;</td></tr>
<tr><td class="h"><a name="674"></a>674</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="675"></a>675</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="676"></a>676</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $m_form{$f}) {</td></tr>
<tr><td class="h"><a name="677"></a>677</td><td></td><td></td><td></td><td></td><td class="s">            if ($m) {</td></tr>
<tr><td class="h"><a name="678"></a>678</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Month specified multiple times';</td></tr>
<tr><td class="h"><a name="679"></a>679</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="680"></a>680</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="681"></a>681</td><td></td><td></td><td></td><td></td><td class="s">            $m = 1;</td></tr>
<tr><td class="h"><a name="682"></a>682</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="683"></a>683</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="684"></a>684</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $d_form{$f}) {</td></tr>
<tr><td class="h"><a name="685"></a>685</td><td></td><td></td><td></td><td></td><td class="s">            if ($d) {</td></tr>
<tr><td class="h"><a name="686"></a>686</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Day specified multiple times';</td></tr>
<tr><td class="h"><a name="687"></a>687</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="688"></a>688</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="689"></a>689</td><td></td><td></td><td></td><td></td><td class="s">            $d = 1;</td></tr>
<tr><td class="h"><a name="690"></a>690</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="691"></a>691</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="692"></a>692</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $h_form{$f}) {</td></tr>
<tr><td class="h"><a name="693"></a>693</td><td></td><td></td><td></td><td></td><td class="s">            if ($h) {</td></tr>
<tr><td class="h"><a name="694"></a>694</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Hour specified multiple times';</td></tr>
<tr><td class="h"><a name="695"></a>695</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="696"></a>696</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="697"></a>697</td><td></td><td></td><td></td><td></td><td class="s">            $h = 1;</td></tr>
<tr><td class="h"><a name="698"></a>698</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="699"></a>699</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="700"></a>700</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $mn_form{$f}) {</td></tr>
<tr><td class="h"><a name="701"></a>701</td><td></td><td></td><td></td><td></td><td class="s">            if ($mn) {</td></tr>
<tr><td class="h"><a name="702"></a>702</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Minutes specified multiple times';</td></tr>
<tr><td class="h"><a name="703"></a>703</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="704"></a>704</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="705"></a>705</td><td></td><td></td><td></td><td></td><td class="s">            $mn = 1;</td></tr>
<tr><td class="h"><a name="706"></a>706</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="707"></a>707</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="708"></a>708</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $s_form{$f}) {</td></tr>
<tr><td class="h"><a name="709"></a>709</td><td></td><td></td><td></td><td></td><td class="s">            if ($s) {</td></tr>
<tr><td class="h"><a name="710"></a>710</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Seconds specified multiple times';</td></tr>
<tr><td class="h"><a name="711"></a>711</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="712"></a>712</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="713"></a>713</td><td></td><td></td><td></td><td></td><td class="s">            $s = 1;</td></tr>
<tr><td class="h"><a name="714"></a>714</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="715"></a>715</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="716"></a>716</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $dow_form{$f}) {</td></tr>
<tr><td class="h"><a name="717"></a>717</td><td></td><td></td><td></td><td></td><td class="s">            if ($dow) {</td></tr>
<tr><td class="h"><a name="718"></a>718</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Day-of-week specified multiple times';</td></tr>
<tr><td class="h"><a name="719"></a>719</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="720"></a>720</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="721"></a>721</td><td></td><td></td><td></td><td></td><td class="s">            $dow = 1;</td></tr>
<tr><td class="h"><a name="722"></a>722</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="723"></a>723</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="724"></a>724</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $am_form{$f}) {</td></tr>
<tr><td class="h"><a name="725"></a>725</td><td></td><td></td><td></td><td></td><td class="s">            if ($ampm) {</td></tr>
<tr><td class="h"><a name="726"></a>726</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'AM/PM specified multiple times';</td></tr>
<tr><td class="h"><a name="727"></a>727</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="728"></a>728</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="729"></a>729</td><td></td><td></td><td></td><td></td><td class="s">            $ampm = 1;</td></tr>
<tr><td class="h"><a name="730"></a>730</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="731"></a>731</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="732"></a>732</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $z_form{$f}) {</td></tr>
<tr><td class="h"><a name="733"></a>733</td><td></td><td></td><td></td><td></td><td class="s">            if ($zone) {</td></tr>
<tr><td class="h"><a name="734"></a>734</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'Zone specified multiple times';</td></tr>
<tr><td class="h"><a name="735"></a>735</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="736"></a>736</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="737"></a>737</td><td></td><td></td><td></td><td></td><td class="s">            $zone = 1;</td></tr>
<tr><td class="h"><a name="738"></a>738</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="739"></a>739</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="740"></a>740</td><td></td><td></td><td></td><td></td><td class="s">         if ($f eq 'G') {</td></tr>
<tr><td class="h"><a name="741"></a>741</td><td></td><td></td><td></td><td></td><td class="s">            if ($G) {</td></tr>
<tr><td class="h"><a name="742"></a>742</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'G specified multiple times';</td></tr>
<tr><td class="h"><a name="743"></a>743</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="744"></a>744</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="745"></a>745</td><td></td><td></td><td></td><td></td><td class="s">            $G = 1;</td></tr>
<tr><td class="h"><a name="746"></a>746</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="747"></a>747</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'W') {</td></tr>
<tr><td class="h"><a name="748"></a>748</td><td></td><td></td><td></td><td></td><td class="s">            if ($W) {</td></tr>
<tr><td class="h"><a name="749"></a>749</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'W specified multiple times';</td></tr>
<tr><td class="h"><a name="750"></a>750</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="751"></a>751</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="752"></a>752</td><td></td><td></td><td></td><td></td><td class="s">            $W = 1;</td></tr>
<tr><td class="h"><a name="753"></a>753</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="754"></a>754</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'L') {</td></tr>
<tr><td class="h"><a name="755"></a>755</td><td></td><td></td><td></td><td></td><td class="s">            if ($L) {</td></tr>
<tr><td class="h"><a name="756"></a>756</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'L specified multiple times';</td></tr>
<tr><td class="h"><a name="757"></a>757</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="758"></a>758</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="759"></a>759</td><td></td><td></td><td></td><td></td><td class="s">            $L = 1;</td></tr>
<tr><td class="h"><a name="760"></a>760</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="761"></a>761</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'U') {</td></tr>
<tr><td class="h"><a name="762"></a>762</td><td></td><td></td><td></td><td></td><td class="s">            if ($U) {</td></tr>
<tr><td class="h"><a name="763"></a>763</td><td></td><td></td><td></td><td></td><td class="s">               $err = 'U specified multiple times';</td></tr>
<tr><td class="h"><a name="764"></a>764</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="765"></a>765</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="766"></a>766</td><td></td><td></td><td></td><td></td><td class="s">            $U = 1;</td></tr>
<tr><td class="h"><a name="767"></a>767</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="768"></a>768</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="769"></a>769</td><td></td><td></td><td></td><td></td><td class="s">         ###</td></tr>
<tr><td class="h"><a name="770"></a>770</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="771"></a>771</td><td></td><td></td><td></td><td></td><td class="s">         if ($f eq 'Y') {</td></tr>
<tr><td class="h"><a name="772"></a>772</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;y&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="773"></a>773</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="774"></a>774</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'y') {</td></tr>
<tr><td class="h"><a name="775"></a>775</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;y&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="776"></a>776</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="777"></a>777</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'm') {</td></tr>
<tr><td class="h"><a name="778"></a>778</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;m&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="779"></a>779</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="780"></a>780</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'f') {</td></tr>
<tr><td class="h"><a name="781"></a>781</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?:(?&lt;m&gt;\d\d)| ?(?&lt;m&gt;\d))';</td></tr>
<tr><td class="h"><a name="782"></a>782</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="783"></a>783</td><td></td><td></td><td></td><td></td><td class="s">         } elsif (exists $mon_form{$f}) {</td></tr>
<tr><td class="h"><a name="784"></a>784</td><td></td><td></td><td></td><td></td><td class="s">            my $abb = $$dmb{'data'}{'rx'}{'month_abb'}[0];</td></tr>
<tr><td class="h"><a name="785"></a>785</td><td></td><td></td><td></td><td></td><td class="s">            my $nam = $$dmb{'data'}{'rx'}{'month_name'}[0];</td></tr>
<tr><td class="h"><a name="786"></a>786</td><td></td><td></td><td></td><td></td><td class="s">            $re .= &quot;(?:(?&lt;mon_name&gt;$nam)|(?&lt;mon_abb&gt;$abb))&quot;;</td></tr>
<tr><td class="h"><a name="787"></a>787</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="788"></a>788</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'j') {</td></tr>
<tr><td class="h"><a name="789"></a>789</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;doy&gt;\d\d\d)';</td></tr>
<tr><td class="h"><a name="790"></a>790</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="791"></a>791</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'd') {</td></tr>
<tr><td class="h"><a name="792"></a>792</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;d&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="793"></a>793</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="794"></a>794</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'e') {</td></tr>
<tr><td class="h"><a name="795"></a>795</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?:(?&lt;d&gt;\d\d)| ?(?&lt;d&gt;\d))';</td></tr>
<tr><td class="h"><a name="796"></a>796</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="797"></a>797</td><td></td><td></td><td></td><td></td><td class="s">         } elsif (exists $day_form{$f}) {</td></tr>
<tr><td class="h"><a name="798"></a>798</td><td></td><td></td><td></td><td></td><td class="s">            my $abb  = $$dmb{'data'}{'rx'}{'day_abb'}[0];</td></tr>
<tr><td class="h"><a name="799"></a>799</td><td></td><td></td><td></td><td></td><td class="s">            my $name = $$dmb{'data'}{'rx'}{'day_name'}[0];</td></tr>
<tr><td class="h"><a name="800"></a>800</td><td></td><td></td><td></td><td></td><td class="s">            my $char = $$dmb{'data'}{'rx'}{'day_char'}[0];</td></tr>
<tr><td class="h"><a name="801"></a>801</td><td></td><td></td><td></td><td></td><td class="s">            $re .= &quot;(?:(?&lt;dow_name&gt;$name)|(?&lt;dow_abb&gt;$abb)|(?&lt;dow_char&gt;$char))&quot;;</td></tr>
<tr><td class="h"><a name="802"></a>802</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="803"></a>803</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'w') {</td></tr>
<tr><td class="h"><a name="804"></a>804</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;dow_num&gt;[1-7])';</td></tr>
<tr><td class="h"><a name="805"></a>805</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="806"></a>806</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'E') {</td></tr>
<tr><td class="h"><a name="807"></a>807</td><td></td><td></td><td></td><td></td><td class="s">            my $nth = $$dmb{'data'}{'rx'}{'nth'}[0];</td></tr>
<tr><td class="h"><a name="808"></a>808</td><td></td><td></td><td></td><td></td><td class="s">            $re .= &quot;(?&lt;nth&gt;$nth)&quot;</td></tr>
<tr><td class="h"><a name="809"></a>809</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="810"></a>810</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'H'  ||  $f eq 'I') {</td></tr>
<tr><td class="h"><a name="811"></a>811</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;h&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="812"></a>812</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="813"></a>813</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'k'  ||  $f eq 'i') {</td></tr>
<tr><td class="h"><a name="814"></a>814</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?:(?&lt;h&gt;\d\d)| ?(?&lt;h&gt;\d))';</td></tr>
<tr><td class="h"><a name="815"></a>815</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="816"></a>816</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'p') {</td></tr>
<tr><td class="h"><a name="817"></a>817</td><td></td><td></td><td></td><td></td><td class="s">            my $ampm = $$dmb{data}{rx}{ampm}[0];</td></tr>
<tr><td class="h"><a name="818"></a>818</td><td></td><td></td><td></td><td></td><td class="s">            $re .= &quot;(?&lt;ampm&gt;$ampm)&quot;;</td></tr>
<tr><td class="h"><a name="819"></a>819</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="820"></a>820</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'M') {</td></tr>
<tr><td class="h"><a name="821"></a>821</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;mn&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="822"></a>822</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="823"></a>823</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'S') {</td></tr>
<tr><td class="h"><a name="824"></a>824</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;s&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="825"></a>825</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="826"></a>826</td><td></td><td></td><td></td><td></td><td class="s">         } elsif (exists $z_form{$f}) {</td></tr>
<tr><td class="h"><a name="827"></a>827</td><td></td><td></td><td></td><td></td><td class="s">            $re .= $dmt-&gt;_zrx('zrx');</td></tr>
<tr><td class="h"><a name="828"></a>828</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="829"></a>829</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 's') {</td></tr>
<tr><td class="h"><a name="830"></a>830</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;epochs&gt;\d+)';</td></tr>
<tr><td class="h"><a name="831"></a>831</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="832"></a>832</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'o') {</td></tr>
<tr><td class="h"><a name="833"></a>833</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;epocho&gt;\d+)';</td></tr>
<tr><td class="h"><a name="834"></a>834</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="835"></a>835</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'G') {</td></tr>
<tr><td class="h"><a name="836"></a>836</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;g&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="837"></a>837</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="838"></a>838</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'W') {</td></tr>
<tr><td class="h"><a name="839"></a>839</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;w&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="840"></a>840</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="841"></a>841</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'L') {</td></tr>
<tr><td class="h"><a name="842"></a>842</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;l&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="843"></a>843</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="844"></a>844</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'U') {</td></tr>
<tr><td class="h"><a name="845"></a>845</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '(?&lt;u&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="846"></a>846</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="847"></a>847</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'c') {</td></tr>
<tr><td class="h"><a name="848"></a>848</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%a %b %e %H:%M:%S %Y' . $format;</td></tr>
<tr><td class="h"><a name="849"></a>849</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="850"></a>850</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'C'  ||  $f eq 'u') {</td></tr>
<tr><td class="h"><a name="851"></a>851</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%a %b %e %H:%M:%S %Z %Y' . $format;</td></tr>
<tr><td class="h"><a name="852"></a>852</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="853"></a>853</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'g') {</td></tr>
<tr><td class="h"><a name="854"></a>854</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%a, %d %b %Y %H:%M:%S %Z' . $format;</td></tr>
<tr><td class="h"><a name="855"></a>855</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="856"></a>856</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'D') {</td></tr>
<tr><td class="h"><a name="857"></a>857</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%m/%d/%y' . $format;</td></tr>
<tr><td class="h"><a name="858"></a>858</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="859"></a>859</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'r') {</td></tr>
<tr><td class="h"><a name="860"></a>860</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%I:%M:%S %p' . $format;</td></tr>
<tr><td class="h"><a name="861"></a>861</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="862"></a>862</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'R') {</td></tr>
<tr><td class="h"><a name="863"></a>863</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%H:%M' . $format;</td></tr>
<tr><td class="h"><a name="864"></a>864</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="865"></a>865</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'T'  ||  $f eq 'X') {</td></tr>
<tr><td class="h"><a name="866"></a>866</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%H:%M:%S' . $format;</td></tr>
<tr><td class="h"><a name="867"></a>867</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="868"></a>868</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'V') {</td></tr>
<tr><td class="h"><a name="869"></a>869</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%m%d%H%M%y' . $format;</td></tr>
<tr><td class="h"><a name="870"></a>870</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="871"></a>871</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'Q') {</td></tr>
<tr><td class="h"><a name="872"></a>872</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%Y%m%d' . $format;</td></tr>
<tr><td class="h"><a name="873"></a>873</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="874"></a>874</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'q') {</td></tr>
<tr><td class="h"><a name="875"></a>875</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%Y%m%d%H%M%S' . $format;</td></tr>
<tr><td class="h"><a name="876"></a>876</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="877"></a>877</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'P') {</td></tr>
<tr><td class="h"><a name="878"></a>878</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%Y%m%d%H:%M:%S' . $format;</td></tr>
<tr><td class="h"><a name="879"></a>879</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="880"></a>880</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'O') {</td></tr>
<tr><td class="h"><a name="881"></a>881</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%Y\\-%m\\-%dT%H:%M:%S' . $format;</td></tr>
<tr><td class="h"><a name="882"></a>882</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="883"></a>883</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'F') {</td></tr>
<tr><td class="h"><a name="884"></a>884</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%A, %B %e, %Y' . $format;</td></tr>
<tr><td class="h"><a name="885"></a>885</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="886"></a>886</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'K') {</td></tr>
<tr><td class="h"><a name="887"></a>887</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%Y-%j' . $format;</td></tr>
<tr><td class="h"><a name="888"></a>888</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="889"></a>889</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'J') {</td></tr>
<tr><td class="h"><a name="890"></a>890</td><td></td><td></td><td></td><td></td><td class="s">            $format = '%G-W%W-%w' . $format;</td></tr>
<tr><td class="h"><a name="891"></a>891</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="892"></a>892</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 'x') {</td></tr>
<tr><td class="h"><a name="893"></a>893</td><td></td><td></td><td></td><td></td><td class="s">            if ($dmb-&gt;_config('dateformat') eq 'US') {</td></tr>
<tr><td class="h"><a name="894"></a>894</td><td></td><td></td><td></td><td></td><td class="s">               $format = '%m/%d/%y' . $format;</td></tr>
<tr><td class="h"><a name="895"></a>895</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="896"></a>896</td><td></td><td></td><td></td><td></td><td class="s">               $format = '%d/%m/%y' . $format;</td></tr>
<tr><td class="h"><a name="897"></a>897</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="898"></a>898</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="899"></a>899</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq 't') {</td></tr>
<tr><td class="h"><a name="900"></a>900</td><td></td><td></td><td></td><td></td><td class="s">            $re .= &quot;\t&quot;;</td></tr>
<tr><td class="h"><a name="901"></a>901</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="902"></a>902</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq '%') {</td></tr>
<tr><td class="h"><a name="903"></a>903</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '%';</td></tr>
<tr><td class="h"><a name="904"></a>904</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="905"></a>905</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($f eq '+') {</td></tr>
<tr><td class="h"><a name="906"></a>906</td><td></td><td></td><td></td><td></td><td class="s">            $re .= '\\+';</td></tr>
<tr><td class="h"><a name="907"></a>907</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="908"></a>908</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="909"></a>909</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="910"></a>910</td><td></td><td></td><td></td><td></td><td class="s">      if ($m != $d) {</td></tr>
<tr><td class="h"><a name="911"></a>911</td><td></td><td></td><td></td><td></td><td class="s">         $err = 'Date not fully specified';</td></tr>
<tr><td class="h"><a name="912"></a>912</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ( ($h || $mn || $s)  &amp;&amp;  (! $h  ||  ! $mn) ) {</td></tr>
<tr><td class="h"><a name="913"></a>913</td><td></td><td></td><td></td><td></td><td class="s">         $err = 'Time not fully specified';</td></tr>
<tr><td class="h"><a name="914"></a>914</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($ampm  &amp;&amp;  ! $h) {</td></tr>
<tr><td class="h"><a name="915"></a>915</td><td></td><td></td><td></td><td></td><td class="s">         $err = 'Time not fully specified';</td></tr>
<tr><td class="h"><a name="916"></a>916</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($G != $W) {</td></tr>
<tr><td class="h"><a name="917"></a>917</td><td></td><td></td><td></td><td></td><td class="s">         $err = 'G/W must both be specified';</td></tr>
<tr><td class="h"><a name="918"></a>918</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($L != $U) {</td></tr>
<tr><td class="h"><a name="919"></a>919</td><td></td><td></td><td></td><td></td><td class="s">         $err = 'L/U must both be specified';</td></tr>
<tr><td class="h"><a name="920"></a>920</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="921"></a>921</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="922"></a>922</td><td></td><td></td><td></td><td></td><td class="s">      if ($err) {</td></tr>
<tr><td class="h"><a name="923"></a>923</td><td></td><td></td><td></td><td></td><td class="s">         $$dmb{'data'}{'format'}{$format} = [$err];</td></tr>
<tr><td class="h"><a name="924"></a>924</td><td></td><td></td><td></td><td></td><td class="s">         return ($err);</td></tr>
<tr><td class="h"><a name="925"></a>925</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="926"></a>926</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="927"></a>927</td><td></td><td></td><td></td><td></td><td class="s">      $$dmb{'data'}{'format'}{$format} = [0, qr/$re/i];</td></tr>
<tr><td class="h"><a name="928"></a>928</td><td></td><td></td><td></td><td></td><td class="s">      return @{ $$dmb{'data'}{'format'}{$format} };</td></tr>
<tr><td class="h"><a name="929"></a>929</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="930"></a>930</td><td class="c3">1</td><td class="c0"><span title="Avg 876µs">876µs</span></td><td class="c3">1</td><td class="c3">18µs</td><td class="s">}<div class="calls"><div class="calls_out"># spent    18µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#629">Date::Manip::Date::BEGIN@629</a></div></div></td></tr>
<tr><td class="h"><a name="931"></a>931</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="932"></a>932</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="933"></a>933</td><td></td><td></td><td></td><td></td><td class="s"># DATE FORMATS</td></tr>
<tr><td class="h"><a name="934"></a>934</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="935"></a>935</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="936"></a>936</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 1.70s (37.4ms+1.66) within Date::Manip::Date::_parse_check which was called 2430 times, avg 701µs/call:
# 2430 times (37.4ms+1.66s) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#321">line 321</a>, avg 701µs/call</div></div>sub _parse_check {</td></tr>
<tr><td class="h"><a name="937"></a>937</td><td class="c0">2430</td><td class="c0"><span title="Avg 586ns">1.42ms</span></td><td></td><td></td><td class="s">   my($self,$caller,$instring,</td></tr>
<tr><td class="h"><a name="938"></a>938</td><td></td><td></td><td></td><td></td><td class="s">      $y,$m,$d,$h,$mn,$s,$dow,$tzstring,$zone,$abb,$off) = @_;</td></tr>
<tr><td class="h"><a name="939"></a>939</td><td class="c0">2430</td><td class="c2"><span title="Avg 148ns">360µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="940"></a>940</td><td class="c0">2430</td><td class="c1"><span title="Avg 165ns">401µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="941"></a>941</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="942"></a>942</td><td></td><td></td><td></td><td></td><td class="s">   # Check day_of_week for validity BEFORE converting 24:00:00 to the</td></tr>
<tr><td class="h"><a name="943"></a>943</td><td></td><td></td><td></td><td></td><td class="s">   # next day</td></tr>
<tr><td class="h"><a name="944"></a>944</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="945"></a>945</td><td class="c0">2430</td><td class="c1"><span title="Avg 200ns">487µs</span></td><td></td><td></td><td class="s">   if ($dow) {</td></tr>
<tr><td class="h"><a name="946"></a>946</td><td class="c0">2401</td><td class="c0"><span title="Avg 1µs">3.39ms</span></td><td class="c0">2401</td><td class="c1">7.26ms</td><td class="s">      my $tmp = $dmb-&gt;day_of_week([$y,$m,$d]);<div class="calls"><div class="calls_out">      # spent  7.26ms making 2401 calls to <a href="Date-Manip-Base-pm-29-line.html#500">Date::Manip::Base::day_of_week</a>, avg 3µs/call</div></div></td></tr>
<tr><td class="h"><a name="947"></a>947</td><td class="c0">2401</td><td class="c0"><span title="Avg 285ns">684µs</span></td><td></td><td></td><td class="s">      if ($tmp != $dow) {</td></tr>
<tr><td class="h"><a name="948"></a>948</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = &quot;[$caller] Day of week invalid&quot;;</td></tr>
<tr><td class="h"><a name="949"></a>949</td><td></td><td></td><td></td><td></td><td class="s">         return 1;</td></tr>
<tr><td class="h"><a name="950"></a>950</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="951"></a>951</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="952"></a>952</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="953"></a>953</td><td></td><td></td><td></td><td></td><td class="s">   # Handle 24:00:00 times.</td></tr>
<tr><td class="h"><a name="954"></a>954</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="955"></a>955</td><td class="c0">2430</td><td class="c3"><span title="Avg 104ns">252µs</span></td><td></td><td></td><td class="s">   if ($h == 24) {</td></tr>
<tr><td class="h"><a name="956"></a>956</td><td></td><td></td><td></td><td></td><td class="s">      ($h,$mn,$s) = (0,0,0);</td></tr>
<tr><td class="h"><a name="957"></a>957</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d)  = @{ $dmb-&gt;calc_date_days([$y,$m,$d],1) };</td></tr>
<tr><td class="h"><a name="958"></a>958</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="959"></a>959</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="960"></a>960</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">3.23ms</span></td><td class="c0">2430</td><td class="c0">28.0ms</td><td class="s">   if (! $dmb-&gt;check([$y,$m,$d,$h,$mn,$s])) {<div class="calls"><div class="calls_out">   # spent  28.0ms making 2430 calls to <a href="Date-Manip-Base-pm-29-line.html#609">Date::Manip::Base::check</a>, avg 12µs/call</div></div></td></tr>
<tr><td class="h"><a name="961"></a>961</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = &quot;[$caller] Invalid date&quot;;</td></tr>
<tr><td class="h"><a name="962"></a>962</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="963"></a>963</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="964"></a>964</td><td class="c0">2430</td><td class="c0"><span title="Avg 628ns">1.53ms</span></td><td></td><td></td><td class="s">   my $date   = [$y,$m,$d,$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="965"></a>965</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="966"></a>966</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="967"></a>967</td><td></td><td></td><td></td><td></td><td class="s">   # We need to check that the date is valid in a timezone.  The</td></tr>
<tr><td class="h"><a name="968"></a>968</td><td></td><td></td><td></td><td></td><td class="s">   # timezone may be referred to with $zone, $abb, or $off, and</td></tr>
<tr><td class="h"><a name="969"></a>969</td><td></td><td></td><td></td><td></td><td class="s">   # unfortunately, $abb MAY be the name of an abbrevation OR a</td></tr>
<tr><td class="h"><a name="970"></a>970</td><td></td><td></td><td></td><td></td><td class="s">   # zone in a few cases.</td></tr>
<tr><td class="h"><a name="971"></a>971</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="972"></a>972</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="973"></a>973</td><td class="c0">2430</td><td class="c3"><span title="Avg 84ns">204µs</span></td><td></td><td></td><td class="s">   my $zonename;</td></tr>
<tr><td class="h"><a name="974"></a>974</td><td class="c0">2430</td><td class="c0"><span title="Avg 272ns">661µs</span></td><td></td><td></td><td class="s">   my $abbrev = (defined $abb ? lc($abb) : '');</td></tr>
<tr><td class="h"><a name="975"></a>975</td><td class="c0">2430</td><td class="c0"><span title="Avg 806ns">1.96ms</span></td><td class="c0">2424</td><td class="c0">88.6ms</td><td class="s">   my $offset = (defined $off ? $dmb-&gt;_delta_convert('offset',$off) : '');<div class="calls"><div class="calls_out">   # spent  88.6ms making 2424 calls to <a href="Date-Manip-Base-pm-29-line.html#2284">Date::Manip::Base::_delta_convert</a>, avg 37µs/call</div></div></td></tr>
<tr><td class="h"><a name="976"></a>976</td><td class="c0">2430</td><td class="c3"><span title="Avg 99ns">241µs</span></td><td></td><td></td><td class="s">   my @tmp;</td></tr>
<tr><td class="h"><a name="977"></a>977</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="978"></a>978</td><td class="c0">2430</td><td class="c0"><span title="Avg 357ns">867µs</span></td><td></td><td></td><td class="s">   if (defined($zone)) {</td></tr>
<tr><td class="h"><a name="979"></a>979</td><td></td><td></td><td></td><td></td><td class="s">      $zonename = $dmt-&gt;_zone($zone);</td></tr>
<tr><td class="h"><a name="980"></a>980</td><td></td><td></td><td></td><td></td><td class="s">      if ($zonename) {</td></tr>
<tr><td class="h"><a name="981"></a>981</td><td></td><td></td><td></td><td></td><td class="s">         @tmp = $self-&gt;__parse_check($date,$zonename,$off,$abb);</td></tr>
<tr><td class="h"><a name="982"></a>982</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="983"></a>983</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="984"></a>984</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (defined($abb)  ||  defined($off)) {</td></tr>
<tr><td class="h"><a name="985"></a>985</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="986"></a>986</td><td class="c0">2430</td><td class="c0"><span title="Avg 942ns">2.29ms</span></td><td class="c0">2430</td><td class="c0">1.33s</td><td class="s">      $zonename = $dmt-&gt;__zone($date,$offset,'',$abbrev,'');<div class="calls"><div class="calls_out">      # spent  1.33s making 2430 calls to <a href="Date-Manip-TZ-pm-39-line.html#813">Date::Manip::TZ::__zone</a>, avg 547µs/call</div></div></td></tr>
<tr><td class="h"><a name="987"></a>987</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">2.91ms</span></td><td class="c0">2430</td><td class="c0">108ms</td><td class="s">      if ($zonename) {<div class="calls"><div class="calls_out">      # spent   108ms making 2430 calls to <a href="Date-Manip-Date-pm-12-line.html#1033">Date::Manip::Date::__parse_check</a>, avg 44µs/call</div></div></td></tr>
<tr><td class="h"><a name="988"></a>988</td><td></td><td></td><td></td><td></td><td class="s">         @tmp = $self-&gt;__parse_check($date,$zonename,$off,$abb);</td></tr>
<tr><td class="h"><a name="989"></a>989</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="990"></a>990</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="991"></a>991</td><td class="c0">2430</td><td class="c0"><span title="Avg 256ns">622µs</span></td><td></td><td></td><td class="s">      if (! @tmp  &amp;&amp;  defined($abb)) {</td></tr>
<tr><td class="h"><a name="992"></a>992</td><td></td><td></td><td></td><td></td><td class="s">         my $tmp = $dmt-&gt;_zone($abb);</td></tr>
<tr><td class="h"><a name="993"></a>993</td><td></td><td></td><td></td><td></td><td class="s">         if ($tmp) {</td></tr>
<tr><td class="h"><a name="994"></a>994</td><td></td><td></td><td></td><td></td><td class="s">            $zonename = $tmp;</td></tr>
<tr><td class="h"><a name="995"></a>995</td><td></td><td></td><td></td><td></td><td class="s">            @tmp = $self-&gt;__parse_check($date,$zonename,$off,undef);</td></tr>
<tr><td class="h"><a name="996"></a>996</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="997"></a>997</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="998"></a>998</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="999"></a>999</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="1000"></a>1000</td><td></td><td></td><td></td><td></td><td class="s">      $zonename = $dmt-&gt;_now('tz');</td></tr>
<tr><td class="h"><a name="1001"></a>1001</td><td></td><td></td><td></td><td></td><td class="s">      if ($zonename) {</td></tr>
<tr><td class="h"><a name="1002"></a>1002</td><td></td><td></td><td></td><td></td><td class="s">         @tmp = $self-&gt;__parse_check($date,$zonename,$off,$abb);</td></tr>
<tr><td class="h"><a name="1003"></a>1003</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1004"></a>1004</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1005"></a>1005</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1006"></a>1006</td><td class="c0">2430</td><td class="c3"><span title="Avg 93ns">226µs</span></td><td></td><td></td><td class="s">   if (! $zonename) {</td></tr>
<tr><td class="h"><a name="1007"></a>1007</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($zone)) {</td></tr>
<tr><td class="h"><a name="1008"></a>1008</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = &quot;[$caller] Unable to determine timezone: $zone&quot;;</td></tr>
<tr><td class="h"><a name="1009"></a>1009</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1010"></a>1010</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = &quot;[$caller] Unable to determine timezone&quot;;</td></tr>
<tr><td class="h"><a name="1011"></a>1011</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1012"></a>1012</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="1013"></a>1013</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1014"></a>1014</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1015"></a>1015</td><td class="c0">2430</td><td class="c3"><span title="Avg 119ns">289µs</span></td><td></td><td></td><td class="s">   if (! @tmp) {</td></tr>
<tr><td class="h"><a name="1016"></a>1016</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = &quot;[$caller] Invalid timezone&quot;;</td></tr>
<tr><td class="h"><a name="1017"></a>1017</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="1018"></a>1018</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1019"></a>1019</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1020"></a>1020</td><td></td><td></td><td></td><td></td><td class="s">   # Store the date</td></tr>
<tr><td class="h"><a name="1021"></a>1021</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1022"></a>1022</td><td class="c0">2430</td><td class="c1"><span title="Avg 245ns">595µs</span></td><td></td><td></td><td class="s">   my($a,$o,$isdst) = @tmp;</td></tr>
<tr><td class="h"><a name="1023"></a>1023</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1024"></a>1024</td><td class="c0">2430</td><td class="c0"><span title="Avg 759ns">1.84ms</span></td><td class="c0">2430</td><td class="c0">105ms</td><td class="s">   $self-&gt;set('zdate',$zonename,$date,$isdst);<div class="calls"><div class="calls_out">   # spent   105ms making 2430 calls to <a href="Date-Manip-Date-pm-12-line.html#2510">Date::Manip::Date::set</a>, avg 43µs/call</div></div></td></tr>
<tr><td class="h"><a name="1025"></a>1025</td><td class="c0">2430</td><td class="c1"><span title="Avg 193ns">468µs</span></td><td></td><td></td><td class="s">   return 1  if ($$self{'err'});</td></tr>
<tr><td class="h"><a name="1026"></a>1026</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1027"></a>1027</td><td class="c0">2430</td><td class="c0"><span title="Avg 260ns">632µs</span></td><td></td><td></td><td class="s">   $$self{'data'}{'in'}    = $instring;</td></tr>
<tr><td class="h"><a name="1028"></a>1028</td><td class="c0">2430</td><td class="c2"><span title="Avg 125ns">304µs</span></td><td></td><td></td><td class="s">   $$self{'data'}{'zin'}   = $zone  if (defined($zone));</td></tr>
<tr><td class="h"><a name="1029"></a>1029</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1030"></a>1030</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">3.54ms</span></td><td></td><td></td><td class="s">   return 0;</td></tr>
<tr><td class="h"><a name="1031"></a>1031</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1032"></a>1032</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1033"></a>1033</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 108ms (15.4+92.3) within Date::Manip::Date::__parse_check which was called 2430 times, avg 44µs/call:
# 2430 times (15.4ms+92.3ms) by Date::Manip::Date::_parse_check at <a href="Date-Manip-Date-pm-12-line.html#987">line 987</a>, avg 44µs/call</div></div>sub __parse_check {</td></tr>
<tr><td class="h"><a name="1034"></a>1034</td><td class="c0">2430</td><td class="c0"><span title="Avg 347ns">843µs</span></td><td></td><td></td><td class="s">   my($self,$date,$zonename,$off,$abb) = @_;</td></tr>
<tr><td class="h"><a name="1035"></a>1035</td><td class="c0">2430</td><td class="c1"><span title="Avg 212ns">515µs</span></td><td></td><td></td><td class="s">   my $dmt       = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1036"></a>1036</td><td class="c0">2430</td><td class="c2"><span title="Avg 140ns">341µs</span></td><td></td><td></td><td class="s">   my $dmb       = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1037"></a>1037</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1038"></a>1038</td><td class="c0">2430</td><td class="c0"><span title="Avg 853ns">2.07ms</span></td><td class="c0">2424</td><td class="c0">43.8ms</td><td class="s">   if (defined ($off)) {<div class="calls"><div class="calls_out">   # spent  43.8ms making 2424 calls to <a href="Date-Manip-Base-pm-29-line.html#1615">Date::Manip::Base::split</a>, avg 18µs/call</div></div></td></tr>
<tr><td class="h"><a name="1039"></a>1039</td><td></td><td></td><td></td><td></td><td class="s">      $off =  $dmb-&gt;split('offset',$off);</td></tr>
<tr><td class="h"><a name="1040"></a>1040</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1041"></a>1041</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1042"></a>1042</td><td class="c0">2430</td><td class="c0"><span title="Avg 247ns">600µs</span></td><td></td><td></td><td class="s">   foreach my $isdst (0,1) {</td></tr>
<tr><td class="h"><a name="1043"></a>1043</td><td class="c0">2430</td><td class="c0"><span title="Avg 842ns">2.05ms</span></td><td class="c0">2430</td><td class="c0">48.5ms</td><td class="s">      my $per = $dmt-&gt;date_period($date,$zonename,1,$isdst);<div class="calls"><div class="calls_out">      # spent  48.5ms making 2430 calls to <a href="Date-Manip-TZ-pm-39-line.html#1213">Date::Manip::TZ::date_period</a>, avg 20µs/call</div></div></td></tr>
<tr><td class="h"><a name="1044"></a>1044</td><td class="c0">2430</td><td class="c2"><span title="Avg 126ns">307µs</span></td><td></td><td></td><td class="s">      next    if (! $per);</td></tr>
<tr><td class="h"><a name="1045"></a>1045</td><td class="c0">2430</td><td class="c2"><span title="Avg 158ns">383µs</span></td><td></td><td></td><td class="s">      my $a   = $$per[4];</td></tr>
<tr><td class="h"><a name="1046"></a>1046</td><td class="c0">2430</td><td class="c2"><span title="Avg 138ns">335µs</span></td><td></td><td></td><td class="s">      my $o   = $$per[3];</td></tr>
<tr><td class="h"><a name="1047"></a>1047</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1048"></a>1048</td><td></td><td></td><td></td><td></td><td class="s">      # If $abb is defined, it must match.</td></tr>
<tr><td class="h"><a name="1049"></a>1049</td><td class="c0">2430</td><td class="c2"><span title="Avg 133ns">324µs</span></td><td></td><td></td><td class="s">      next  if (defined $abb  &amp;&amp;  lc($a) ne lc($abb));</td></tr>
<tr><td class="h"><a name="1050"></a>1050</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1051"></a>1051</td><td></td><td></td><td></td><td></td><td class="s">      # If $off is defined, it must match.</td></tr>
<tr><td class="h"><a name="1052"></a>1052</td><td class="c0">2430</td><td class="c1"><span title="Avg 194ns">472µs</span></td><td></td><td></td><td class="s">      if (defined ($off)) {</td></tr>
<tr><td class="h"><a name="1053"></a>1053</td><td class="c0">2424</td><td class="c0"><span title="Avg 498ns">1.21ms</span></td><td></td><td></td><td class="s">         next  if ($$off[0] != $$o[0]  ||</td></tr>
<tr><td class="h"><a name="1054"></a>1054</td><td></td><td></td><td></td><td></td><td class="s">                   $$off[1] != $$o[1]  ||</td></tr>
<tr><td class="h"><a name="1055"></a>1055</td><td></td><td></td><td></td><td></td><td class="s">                   $$off[2] != $$o[2]);</td></tr>
<tr><td class="h"><a name="1056"></a>1056</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1057"></a>1057</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1058"></a>1058</td><td class="c0">2430</td><td class="c0"><span title="Avg 2µs">4.08ms</span></td><td></td><td></td><td class="s">      return ($a,$o,$isdst);</td></tr>
<tr><td class="h"><a name="1059"></a>1059</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1060"></a>1060</td><td></td><td></td><td></td><td></td><td class="s">   return ();</td></tr>
<tr><td class="h"><a name="1061"></a>1061</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1062"></a>1062</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1063"></a>1063</td><td></td><td></td><td></td><td></td><td class="s"># Set up the regular expressions for ISO 8601 parsing. Returns the</td></tr>
<tr><td class="h"><a name="1064"></a>1064</td><td></td><td></td><td></td><td></td><td class="s"># requested regexp. $rx can be:</td></tr>
<tr><td class="h"><a name="1065"></a>1065</td><td></td><td></td><td></td><td></td><td class="s">#    cdate    : regular expression for a complete date</td></tr>
<tr><td class="h"><a name="1066"></a>1066</td><td></td><td></td><td></td><td></td><td class="s">#    tdate    : regular expression for a truncated date</td></tr>
<tr><td class="h"><a name="1067"></a>1067</td><td></td><td></td><td></td><td></td><td class="s">#    ctime    : regular expression for a complete time</td></tr>
<tr><td class="h"><a name="1068"></a>1068</td><td></td><td></td><td></td><td></td><td class="s">#    ttime    : regular expression for a truncated time</td></tr>
<tr><td class="h"><a name="1069"></a>1069</td><td></td><td></td><td></td><td></td><td class="s">#    date     : regular expression for a date only</td></tr>
<tr><td class="h"><a name="1070"></a>1070</td><td></td><td></td><td></td><td></td><td class="s">#    time     : regular expression for a time only</td></tr>
<tr><td class="h"><a name="1071"></a>1071</td><td></td><td></td><td></td><td></td><td class="s">#    UNDEF    : regular expression for a valid date and/or time</td></tr>
<tr><td class="h"><a name="1072"></a>1072</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="1073"></a>1073</td><td></td><td></td><td></td><td></td><td class="s"># Date matches are:</td></tr>
<tr><td class="h"><a name="1074"></a>1074</td><td></td><td></td><td></td><td></td><td class="s">#    y m d doy w dow yod c</td></tr>
<tr><td class="h"><a name="1075"></a>1075</td><td></td><td></td><td></td><td></td><td class="s"># Time matches are:</td></tr>
<tr><td class="h"><a name="1076"></a>1076</td><td></td><td></td><td></td><td></td><td class="s">#    h h24 mn s fh fm</td></tr>
<tr><td class="h"><a name="1077"></a>1077</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="1078"></a>1078</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 27.8ms (3.97+23.8) within Date::Manip::Date::_iso8601_rx which was called 2440 times, avg 11µs/call:
# 2436 times (3.87ms+23.9ms) by Date::Manip::Date::_parse_datetime_iso8601 at <a href="Date-Manip-Date-pm-12-line.html#1231">line 1231</a>, avg 11µs/call
#       once (4µs+-4µs) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1211">line 1211</a>
#       once (34µs+-34µs) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1210">line 1210</a>
#       once (2µs+-2µs) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1209">line 1209</a>
#       once (63µs+-63µs) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1208">line 1208</a></div></div>sub _iso8601_rx {</td></tr>
<tr><td class="h"><a name="1079"></a>1079</td><td class="c0">2440</td><td class="c2"><span title="Avg 144ns">352µs</span></td><td></td><td></td><td class="s">   my($self,$rx) = @_;</td></tr>
<tr><td class="h"><a name="1080"></a>1080</td><td class="c0">2440</td><td class="c2"><span title="Avg 150ns">366µs</span></td><td></td><td></td><td class="s">   my $dmt       = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1081"></a>1081</td><td class="c0">2440</td><td class="c2"><span title="Avg 155ns">379µs</span></td><td></td><td></td><td class="s">   my $dmb       = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1082"></a>1082</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1083"></a>1083</td><td class="c0">2440</td><td class="c0"><span title="Avg 2µs">4.55ms</span></td><td></td><td></td><td class="s">   return $$dmb{'data'}{'rx'}{'iso'}{$rx}</td></tr>
<tr><td class="h"><a name="1084"></a>1084</td><td></td><td></td><td></td><td></td><td class="s">     if (exists $$dmb{'data'}{'rx'}{'iso'}{$rx});</td></tr>
<tr><td class="h"><a name="1085"></a>1085</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1086"></a>1086</td><td class="c3">3</td><td class="c3"><span title="Avg 833ns">2µs</span></td><td></td><td></td><td class="s">   if ($rx eq 'cdate'  ||  $rx eq 'tdate') {</td></tr>
<tr><td class="h"><a name="1087"></a>1087</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1088"></a>1088</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $y4  = '(?&lt;y&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="1089"></a>1089</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $y2  = '(?&lt;y&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1090"></a>1090</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $m   = '(?&lt;m&gt;0[1-9]|1[0-2])';</td></tr>
<tr><td class="h"><a name="1091"></a>1091</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $d   = '(?&lt;d&gt;0[1-9]|[12][0-9]|3[01])';</td></tr>
<tr><td class="h"><a name="1092"></a>1092</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $doy = '(?&lt;doy&gt;00[1-9]|0[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|36[0-6])';</td></tr>
<tr><td class="h"><a name="1093"></a>1093</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $w   = '(?&lt;w&gt;0[1-9]|[1-4][0-9]|5[0-3])';</td></tr>
<tr><td class="h"><a name="1094"></a>1094</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $dow = '(?&lt;dow&gt;[1-7])';</td></tr>
<tr><td class="h"><a name="1095"></a>1095</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $yod = '(?&lt;yod&gt;\d)';</td></tr>
<tr><td class="h"><a name="1096"></a>1096</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $cc  = '(?&lt;c&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1097"></a>1097</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1098"></a>1098</td><td class="c3">1</td><td class="c3"><span title="Avg 13µs">13µs</span></td><td></td><td></td><td class="s">      my $cdaterx =</td></tr>
<tr><td class="h"><a name="1099"></a>1099</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}${m}${d}|&quot; .                 # CCYYMMDD</td></tr>
<tr><td class="h"><a name="1100"></a>1100</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\-${m}\\-${d}|&quot; .           # CCYY-MM-DD</td></tr>
<tr><td class="h"><a name="1101"></a>1101</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-${y2}${m}${d}|&quot; .            # -YYMMDD</td></tr>
<tr><td class="h"><a name="1102"></a>1102</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-${y2}\\-${m}\\-${d}|&quot; .      # -YY-MM-DD</td></tr>
<tr><td class="h"><a name="1103"></a>1103</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${y2}${m}${d}|&quot; .           # YYMMDD</td></tr>
<tr><td class="h"><a name="1104"></a>1104</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${y2}\\-${m}\\-${d}|&quot; .     # YY-MM-DD</td></tr>
<tr><td class="h"><a name="1105"></a>1105</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-\\-${m}\\-?${d}|&quot; .          # --MM-DD   --MMDD</td></tr>
<tr><td class="h"><a name="1106"></a>1106</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-\\-\\-${d}|&quot; .               # ---DD</td></tr>
<tr><td class="h"><a name="1107"></a>1107</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1108"></a>1108</td><td></td><td></td><td></td><td></td><td class="s">          &quot;${y4}\\-?${doy}|&quot; .             # CCYY-DoY  CCYYDoY</td></tr>
<tr><td class="h"><a name="1109"></a>1109</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${y2}\\-?${doy}|&quot; .         # YY-DoY    -YY-DoY</td></tr>
<tr><td class="h"><a name="1110"></a>1110</td><td></td><td></td><td></td><td></td><td class="s">                                           # YYDoY     -YYDoY</td></tr>
<tr><td class="h"><a name="1111"></a>1111</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-${doy}|&quot; .                   # -DoY</td></tr>
<tr><td class="h"><a name="1112"></a>1112</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1113"></a>1113</td><td></td><td></td><td></td><td></td><td class="s">          &quot;${y4}W${w}${dow}|&quot; .            # CCYYWwwD</td></tr>
<tr><td class="h"><a name="1114"></a>1114</td><td></td><td></td><td></td><td></td><td class="s">          &quot;${y4}\\-W${w}\\-${dow}|&quot; .      # CCYY-Www-D</td></tr>
<tr><td class="h"><a name="1115"></a>1115</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${y2}W${w}${dow}|&quot; .        # YYWwwD    -YYWwwD</td></tr>
<tr><td class="h"><a name="1116"></a>1116</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${y2}\\-W${w}\\-${dow}|&quot; .  # YY-Www-D  -YY-Www-D</td></tr>
<tr><td class="h"><a name="1117"></a>1117</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1118"></a>1118</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${yod}W${w}${dow}|&quot; .       # YWwwD     -YWwwD</td></tr>
<tr><td class="h"><a name="1119"></a>1119</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-?${yod}\\-W${w}\\-${dow}|&quot; . # Y-Www-D   -Y-Www-D</td></tr>
<tr><td class="h"><a name="1120"></a>1120</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-W${w}\\-?${dow}|&quot; .          # -Www-D    -WwwD</td></tr>
<tr><td class="h"><a name="1121"></a>1121</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-W\\-${dow}|&quot; .               # -W-D</td></tr>
<tr><td class="h"><a name="1122"></a>1122</td><td></td><td></td><td></td><td></td><td class="s">          &quot;\\-\\-\\-${dow}&quot;;               # ---D</td></tr>
<tr><td class="h"><a name="1123"></a>1123</td><td class="c3">1</td><td class="c3"><span title="Avg 168µs">168µs</span></td><td class="c3">2</td><td class="c3">156µs</td><td class="s">      $cdaterx = qr/(?:$cdaterx)/i;<div class="calls"><div class="calls_out">      # spent   154µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     2µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1124"></a>1124</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1125"></a>1125</td><td class="c3">1</td><td class="c3"><span title="Avg 4µs">4µs</span></td><td></td><td></td><td class="s">      my $tdaterx =</td></tr>
<tr><td class="h"><a name="1126"></a>1126</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\-${m}|&quot; .                  # CCYY-MM</td></tr>
<tr><td class="h"><a name="1127"></a>1127</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}|&quot; .                         # CCYY</td></tr>
<tr><td class="h"><a name="1128"></a>1128</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-${y2}\\-?${m}|&quot; .              # -YY-MM    -YYMM</td></tr>
<tr><td class="h"><a name="1129"></a>1129</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-${y2}|&quot; .                      # -YY</td></tr>
<tr><td class="h"><a name="1130"></a>1130</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-\\-${m}|&quot; .                    # --MM</td></tr>
<tr><td class="h"><a name="1131"></a>1131</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1132"></a>1132</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\-?W${w}|&quot; .                # CCYYWww   CCYY-Www</td></tr>
<tr><td class="h"><a name="1133"></a>1133</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-?${y2}\\-?W${w}|&quot; .            # YY-Www    YYWww</td></tr>
<tr><td class="h"><a name="1134"></a>1134</td><td></td><td></td><td></td><td></td><td class="s">                                           # -YY-Www   -YYWww</td></tr>
<tr><td class="h"><a name="1135"></a>1135</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-?W${w}|&quot; .                     # -Www      Www</td></tr>
<tr><td class="h"><a name="1136"></a>1136</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1137"></a>1137</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${cc}&quot;;                           # CC</td></tr>
<tr><td class="h"><a name="1138"></a>1138</td><td class="c3">1</td><td class="c3"><span title="Avg 49µs">49µs</span></td><td class="c3">2</td><td class="c3">35µs</td><td class="s">      $tdaterx = qr/(?:$tdaterx)/i;<div class="calls"><div class="calls_out">      # spent    35µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   600ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1139"></a>1139</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1140"></a>1140</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'cdate'} = $cdaterx;</td></tr>
<tr><td class="h"><a name="1141"></a>1141</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'tdate'} = $tdaterx;</td></tr>
<tr><td class="h"><a name="1142"></a>1142</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1143"></a>1143</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'ctime'  ||  $rx eq 'ttime') {</td></tr>
<tr><td class="h"><a name="1144"></a>1144</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1145"></a>1145</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $hh     = '(?&lt;h&gt;[0-1][0-9]|2[0-3])';</td></tr>
<tr><td class="h"><a name="1146"></a>1146</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $mn     = '(?&lt;mn&gt;[0-5][0-9])';</td></tr>
<tr><td class="h"><a name="1147"></a>1147</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $ss     = '(?&lt;s&gt;[0-5][0-9])';</td></tr>
<tr><td class="h"><a name="1148"></a>1148</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $h24a   = '(?&lt;h24&gt;24(?::00){0,2})';</td></tr>
<tr><td class="h"><a name="1149"></a>1149</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $h24b   = '(?&lt;h24&gt;24(?:00){0,2})';</td></tr>
<tr><td class="h"><a name="1150"></a>1150</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $h      = '(?&lt;h&gt;[0-9])';</td></tr>
<tr><td class="h"><a name="1151"></a>1151</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1152"></a>1152</td><td class="c3">1</td><td class="c3"><span title="Avg 0s">0s</span></td><td></td><td></td><td class="s">      my $fh     = '(?:[\.,](?&lt;fh&gt;\d*))'; # fractional hours (keep)</td></tr>
<tr><td class="h"><a name="1153"></a>1153</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $fm     = '(?:[\.,](?&lt;fm&gt;\d*))'; # fractional seconds (keep)</td></tr>
<tr><td class="h"><a name="1154"></a>1154</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $fs     = '(?:[\.,]\d*)'; # fractional hours (discard)</td></tr>
<tr><td class="h"><a name="1155"></a>1155</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1156"></a>1156</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td class="c3">1</td><td class="c0">15.7ms</td><td class="s">      my $zrx    = $dmt-&gt;_zrx('zrx');<div class="calls"><div class="calls_out">      # spent  15.7ms making 1 call to <a href="Date-Manip-TZ-pm-39-line.html#1531">Date::Manip::TZ::_zrx</a></div></div></td></tr>
<tr><td class="h"><a name="1157"></a>1157</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1158"></a>1158</td><td class="c3">1</td><td class="c3"><span title="Avg 8µs">8µs</span></td><td></td><td></td><td class="s">      my $ctimerx =</td></tr>
<tr><td class="h"><a name="1159"></a>1159</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}${mn}${ss}${fs}?|&quot; .         # HHMNSS[,S+]</td></tr>
<tr><td class="h"><a name="1160"></a>1160</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}:${mn}:${ss}${fs}?|&quot; .       # HH:MN:SS[,S+]</td></tr>
<tr><td class="h"><a name="1161"></a>1161</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}:?${mn}${fm}|&quot; .             # HH:MN,M+       HHMN,M+</td></tr>
<tr><td class="h"><a name="1162"></a>1162</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}${fh}|&quot; .                    # HH,H+</td></tr>
<tr><td class="h"><a name="1163"></a>1163</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-${mn}:?${ss}${fs}?|&quot; .         # -MN:SS[,S+]    -MNSS[,S+]</td></tr>
<tr><td class="h"><a name="1164"></a>1164</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-${mn}${fm}|&quot; .                 # -MN,M+</td></tr>
<tr><td class="h"><a name="1165"></a>1165</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-\\-${ss}${fs}?|&quot; .             # --SS[,S+]</td></tr>
<tr><td class="h"><a name="1166"></a>1166</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}:?${mn}|&quot; .                  # HH:MN          HHMN</td></tr>
<tr><td class="h"><a name="1167"></a>1167</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${h24a}|&quot; .                       # 24:00:00       24:00       24</td></tr>
<tr><td class="h"><a name="1168"></a>1168</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${h24b}|&quot; .                       # 240000         2400</td></tr>
<tr><td class="h"><a name="1169"></a>1169</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${h}:${mn}:${ss}${fs}?|&quot; .        # H:MN:SS[,S+]</td></tr>
<tr><td class="h"><a name="1170"></a>1170</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${h}:${mn}${fm}&quot;;                 # H:MN,M+</td></tr>
<tr><td class="h"><a name="1171"></a>1171</td><td class="c3">1</td><td class="c0"><span title="Avg 2.76ms">2.76ms</span></td><td class="c3">2</td><td class="c3">2.75ms</td><td class="s">      $ctimerx = qr/(?:$ctimerx)(?:\s*$zrx)?/;<div class="calls"><div class="calls_out">      # spent  2.74ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     1µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1172"></a>1172</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1173"></a>1173</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $ttimerx =</td></tr>
<tr><td class="h"><a name="1174"></a>1174</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${hh}|&quot; .                         # HH</td></tr>
<tr><td class="h"><a name="1175"></a>1175</td><td></td><td></td><td></td><td></td><td class="s">        &quot;\\-${mn}&quot;;                        # -MN</td></tr>
<tr><td class="h"><a name="1176"></a>1176</td><td class="c3">1</td><td class="c3"><span title="Avg 15µs">15µs</span></td><td class="c3">2</td><td class="c3">12µs</td><td class="s">      $ttimerx = qr/(?:$ttimerx)/;<div class="calls"><div class="calls_out">      # spent    11µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   400ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1177"></a>1177</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1178"></a>1178</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'ctime'} = $ctimerx;</td></tr>
<tr><td class="h"><a name="1179"></a>1179</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'ttime'} = $ttimerx;</td></tr>
<tr><td class="h"><a name="1180"></a>1180</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1181"></a>1181</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'date') {</td></tr>
<tr><td class="h"><a name="1182"></a>1182</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1183"></a>1183</td><td></td><td></td><td></td><td></td><td class="s">      my $cdaterx = $self-&gt;_iso8601_rx('cdate');</td></tr>
<tr><td class="h"><a name="1184"></a>1184</td><td></td><td></td><td></td><td></td><td class="s">      my $tdaterx = $self-&gt;_iso8601_rx('tdate');</td></tr>
<tr><td class="h"><a name="1185"></a>1185</td><td></td><td></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'date'} = qr/(?:$cdaterx|$tdaterx)/;</td></tr>
<tr><td class="h"><a name="1186"></a>1186</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1187"></a>1187</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'time') {</td></tr>
<tr><td class="h"><a name="1188"></a>1188</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1189"></a>1189</td><td></td><td></td><td></td><td></td><td class="s">      my $ctimerx = $self-&gt;_iso8601_rx('ctime');</td></tr>
<tr><td class="h"><a name="1190"></a>1190</td><td></td><td></td><td></td><td></td><td class="s">      my $ttimerx = $self-&gt;_iso8601_rx('ttime');</td></tr>
<tr><td class="h"><a name="1191"></a>1191</td><td></td><td></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'time'} = qr/(?:$ctimerx|$ttimerx)/;</td></tr>
<tr><td class="h"><a name="1192"></a>1192</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1193"></a>1193</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'fulldate') {</td></tr>
<tr><td class="h"><a name="1194"></a>1194</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1195"></a>1195</td><td></td><td></td><td></td><td></td><td class="s">      # A parseable string contains:</td></tr>
<tr><td class="h"><a name="1196"></a>1196</td><td></td><td></td><td></td><td></td><td class="s">      #   a complete date and complete time</td></tr>
<tr><td class="h"><a name="1197"></a>1197</td><td></td><td></td><td></td><td></td><td class="s">      #   a complete date and truncated time</td></tr>
<tr><td class="h"><a name="1198"></a>1198</td><td></td><td></td><td></td><td></td><td class="s">      #   a truncated date</td></tr>
<tr><td class="h"><a name="1199"></a>1199</td><td></td><td></td><td></td><td></td><td class="s">      #   a complete time</td></tr>
<tr><td class="h"><a name="1200"></a>1200</td><td></td><td></td><td></td><td></td><td class="s">      #   a truncated time</td></tr>
<tr><td class="h"><a name="1201"></a>1201</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1202"></a>1202</td><td></td><td></td><td></td><td></td><td class="s">      # If the string contains both a time and date, they may be adjacent</td></tr>
<tr><td class="h"><a name="1203"></a>1203</td><td></td><td></td><td></td><td></td><td class="s">      # or separated by:</td></tr>
<tr><td class="h"><a name="1204"></a>1204</td><td></td><td></td><td></td><td></td><td class="s">      #   whitespace</td></tr>
<tr><td class="h"><a name="1205"></a>1205</td><td></td><td></td><td></td><td></td><td class="s">      #   T (which must be followed by a number)</td></tr>
<tr><td class="h"><a name="1206"></a>1206</td><td></td><td></td><td></td><td></td><td class="s">      #   a dash</td></tr>
<tr><td class="h"><a name="1207"></a>1207</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1208"></a>1208</td><td class="c3">1</td><td class="c3"><span title="Avg 13µs">13µs</span></td><td class="c3">1</td><td class="c3">0s</td><td class="s">      my $cdaterx = $self-&gt;_iso8601_rx('cdate');<div class="calls"><div class="calls_out">      # spent   254µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1078">Date::Manip::Date::_iso8601_rx</a>, recursion: max depth 1, sum of overlapping time 254µs</div></div></td></tr>
<tr><td class="h"><a name="1209"></a>1209</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td class="c3">1</td><td class="c3">0s</td><td class="s">      my $tdaterx = $self-&gt;_iso8601_rx('tdate');<div class="calls"><div class="calls_out">      # spent     2µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1078">Date::Manip::Date::_iso8601_rx</a>, recursion: max depth 1, sum of overlapping time 2µs</div></div></td></tr>
<tr><td class="h"><a name="1210"></a>1210</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td class="c3">1</td><td class="c3">0s</td><td class="s">      my $ctimerx = $self-&gt;_iso8601_rx('ctime');<div class="calls"><div class="calls_out">      # spent  18.5ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1078">Date::Manip::Date::_iso8601_rx</a>, recursion: max depth 1, sum of overlapping time 18.5ms</div></div></td></tr>
<tr><td class="h"><a name="1211"></a>1211</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td class="c3">1</td><td class="c3">0s</td><td class="s">      my $ttimerx = $self-&gt;_iso8601_rx('ttime');<div class="calls"><div class="calls_out">      # spent     4µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1078">Date::Manip::Date::_iso8601_rx</a>, recursion: max depth 1, sum of overlapping time 4µs</div></div></td></tr>
<tr><td class="h"><a name="1212"></a>1212</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1213"></a>1213</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td class="c3">1</td><td class="c3">700ns</td><td class="s">      my $sep     = qr/(?:T|\-|\s*)/i;<div class="calls"><div class="calls_out">      # spent   700ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1214"></a>1214</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1215"></a>1215</td><td class="c3">1</td><td class="c0"><span title="Avg 5.13ms">5.13ms</span></td><td class="c3">2</td><td class="c2">5.10ms</td><td class="s">      my $daterx  = qr/^\s*(?: $cdaterx(?:$sep(?:$ctimerx|$ttimerx))? |<div class="calls"><div class="calls_out">      # spent  5.10ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     1µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1216"></a>1216</td><td></td><td></td><td></td><td></td><td class="s">                          $tdaterx |</td></tr>
<tr><td class="h"><a name="1217"></a>1217</td><td></td><td></td><td></td><td></td><td class="s">                          $ctimerx |</td></tr>
<tr><td class="h"><a name="1218"></a>1218</td><td></td><td></td><td></td><td></td><td class="s">                          $ttimerx</td></tr>
<tr><td class="h"><a name="1219"></a>1219</td><td></td><td></td><td></td><td></td><td class="s">                       )\s*$/x;</td></tr>
<tr><td class="h"><a name="1220"></a>1220</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1221"></a>1221</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'iso'}{'fulldate'} = $daterx;</td></tr>
<tr><td class="h"><a name="1222"></a>1222</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1223"></a>1223</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1224"></a>1224</td><td class="c3">3</td><td class="c3"><span title="Avg 3µs">9µs</span></td><td></td><td></td><td class="s">   return $$dmb{'data'}{'rx'}{'iso'}{$rx};</td></tr>
<tr><td class="h"><a name="1225"></a>1225</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1226"></a>1226</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1227"></a>1227</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 52.8ms (11.9+41.0) within Date::Manip::Date::_parse_datetime_iso8601 which was called 2436 times, avg 22µs/call:
# 2436 times (11.9ms+41.0ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#142">line 142</a>, avg 22µs/call</div></div>sub _parse_datetime_iso8601 {</td></tr>
<tr><td class="h"><a name="1228"></a>1228</td><td class="c0">2436</td><td class="c1"><span title="Avg 211ns">514µs</span></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1229"></a>1229</td><td class="c0">2436</td><td class="c2"><span title="Avg 161ns">393µs</span></td><td></td><td></td><td class="s">   my $dmt                     = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1230"></a>1230</td><td class="c0">2436</td><td class="c2"><span title="Avg 139ns">338µs</span></td><td></td><td></td><td class="s">   my $dmb                     = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1231"></a>1231</td><td class="c0">2436</td><td class="c0"><span title="Avg 602ns">1.47ms</span></td><td class="c0">2436</td><td class="c0">27.8ms</td><td class="s">   my $daterx                  = $self-&gt;_iso8601_rx('fulldate');<div class="calls"><div class="calls_out">   # spent  27.8ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1078">Date::Manip::Date::_iso8601_rx</a>, avg 11µs/call</div></div></td></tr>
<tr><td class="h"><a name="1232"></a>1232</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1233"></a>1233</td><td class="c0">2436</td><td class="c3"><span title="Avg 118ns">287µs</span></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1234"></a>1234</td><td></td><td></td><td></td><td></td><td class="s">   my($doy,$dow,$yod,$c,$w,$fh,$fm,$h24);</td></tr>
<tr><td class="h"><a name="1235"></a>1235</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1236"></a>1236</td><td class="c0">2436</td><td class="c0"><span title="Avg 7µs">18.0ms</span></td><td class="c0">4872</td><td class="c0">13.2ms</td><td class="s">   if ($string =~ $daterx) {<div class="calls"><div class="calls_out">   # spent  8.04ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 3µs/call
   # spent  5.16ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="1237"></a>1237</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s,$doy,$dow,$yod,$c,$w,$fh,$fm,$h24,</td></tr>
<tr><td class="h"><a name="1238"></a>1238</td><td></td><td></td><td></td><td></td><td class="s">       $tzstring,$zone,$abb,$off) =</td></tr>
<tr><td class="h"><a name="1239"></a>1239</td><td></td><td></td><td></td><td></td><td class="s">         @+{qw(y m d h mn s doy dow yod c w fh fm h24 tzstring zone abb off)};</td></tr>
<tr><td class="h"><a name="1240"></a>1240</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1241"></a>1241</td><td></td><td></td><td></td><td></td><td class="s">      if (defined $w  ||  defined $dow) {</td></tr>
<tr><td class="h"><a name="1242"></a>1242</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)   = $self-&gt;_def_date_dow($y,$w,$dow,$noupdate);</td></tr>
<tr><td class="h"><a name="1243"></a>1243</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (defined $doy) {</td></tr>
<tr><td class="h"><a name="1244"></a>1244</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date_doy($y,$doy,$noupdate);</td></tr>
<tr><td class="h"><a name="1245"></a>1245</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1246"></a>1246</td><td></td><td></td><td></td><td></td><td class="s">         $y = $c . '00'  if (defined $c);</td></tr>
<tr><td class="h"><a name="1247"></a>1247</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,$noupdate);</td></tr>
<tr><td class="h"><a name="1248"></a>1248</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1249"></a>1249</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1250"></a>1250</td><td></td><td></td><td></td><td></td><td class="s">      ($h,$mn,$s) = $self-&gt;_time($h,$mn,$s,$fh,$fm,$h24,undef,$noupdate);</td></tr>
<tr><td class="h"><a name="1251"></a>1251</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="1252"></a>1252</td><td class="c0">2436</td><td class="c0"><span title="Avg 2µs">3.69ms</span></td><td></td><td></td><td class="s">      return (0);</td></tr>
<tr><td class="h"><a name="1253"></a>1253</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1254"></a>1254</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1255"></a>1255</td><td></td><td></td><td></td><td></td><td class="s">   return (1,$y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1256"></a>1256</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1257"></a>1257</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1258"></a>1258</td><td></td><td></td><td></td><td></td><td class="s">sub _parse_date_iso8601 {</td></tr>
<tr><td class="h"><a name="1259"></a>1259</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1260"></a>1260</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt                     = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1261"></a>1261</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb                     = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1262"></a>1262</td><td></td><td></td><td></td><td></td><td class="s">   my $daterx                  = $self-&gt;_iso8601_rx('date');</td></tr>
<tr><td class="h"><a name="1263"></a>1263</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1264"></a>1264</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d);</td></tr>
<tr><td class="h"><a name="1265"></a>1265</td><td></td><td></td><td></td><td></td><td class="s">   my($doy,$dow,$yod,$c,$w);</td></tr>
<tr><td class="h"><a name="1266"></a>1266</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1267"></a>1267</td><td></td><td></td><td></td><td></td><td class="s">   if ($string =~ /^$daterx$/) {</td></tr>
<tr><td class="h"><a name="1268"></a>1268</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$doy,$dow,$yod,$c,$w) =</td></tr>
<tr><td class="h"><a name="1269"></a>1269</td><td></td><td></td><td></td><td></td><td class="s">        @+{qw(y m d doy dow yod c w)};</td></tr>
<tr><td class="h"><a name="1270"></a>1270</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1271"></a>1271</td><td></td><td></td><td></td><td></td><td class="s">      if (defined $w  ||  defined $dow) {</td></tr>
<tr><td class="h"><a name="1272"></a>1272</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)   = $self-&gt;_def_date_dow($y,$w,$dow,$noupdate);</td></tr>
<tr><td class="h"><a name="1273"></a>1273</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (defined $doy) {</td></tr>
<tr><td class="h"><a name="1274"></a>1274</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date_doy($y,$doy,$noupdate);</td></tr>
<tr><td class="h"><a name="1275"></a>1275</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1276"></a>1276</td><td></td><td></td><td></td><td></td><td class="s">         $y = $c . '00'  if (defined $c);</td></tr>
<tr><td class="h"><a name="1277"></a>1277</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,$noupdate);</td></tr>
<tr><td class="h"><a name="1278"></a>1278</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1279"></a>1279</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="1280"></a>1280</td><td></td><td></td><td></td><td></td><td class="s">      return (0);</td></tr>
<tr><td class="h"><a name="1281"></a>1281</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1282"></a>1282</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1283"></a>1283</td><td></td><td></td><td></td><td></td><td class="s">   return (1,$y,$m,$d);</td></tr>
<tr><td class="h"><a name="1284"></a>1284</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1285"></a>1285</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1286"></a>1286</td><td></td><td></td><td></td><td></td><td class="s"># Handle all of the time fields.</td></tr>
<tr><td class="h"><a name="1287"></a>1287</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="1288"></a>1288</td><td class="c3">2</td><td class="c3"><span title="Avg 49µs">98µs</span></td><td class="c3">2</td><td class="c3">12µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 10µs (8+2) within Date::Manip::Date::BEGIN@1288 which was called:
#    once (8µs+2µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#1288">line 1288</a></div></div>no integer;<div class="calls"><div class="calls_out"># spent    10µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1288">Date::Manip::Date::BEGIN@1288</a>
# spent     2µs making 1 call to <a href="integer-pm-27-line.html#89">integer::unimport</a></div></div></td></tr>
<tr><td class="h"><a name="1289"></a>1289</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 11.2ms (7.55+3.65) within Date::Manip::Date::_time which was called 2436 times, avg 5µs/call:
# 2436 times (7.55ms+3.65ms) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1678">line 1678</a>, avg 5µs/call</div></div>sub _time {</td></tr>
<tr><td class="h"><a name="1290"></a>1290</td><td class="c0">2436</td><td class="c0"><span title="Avg 424ns">1.03ms</span></td><td></td><td></td><td class="s">   my($self,$h,$mn,$s,$fh,$fm,$h24,$ampm,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1291"></a>1291</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1292"></a>1292</td><td class="c0">2436</td><td class="c3"><span title="Avg 120ns">293µs</span></td><td></td><td></td><td class="s">   if (defined($ampm)  &amp;&amp;  $ampm) {</td></tr>
<tr><td class="h"><a name="1293"></a>1293</td><td></td><td></td><td></td><td></td><td class="s">      my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1294"></a>1294</td><td></td><td></td><td></td><td></td><td class="s">      my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1295"></a>1295</td><td></td><td></td><td></td><td></td><td class="s">      if ($$dmb{'data'}{'wordmatch'}{'ampm'}{lc($ampm)} == 2) {</td></tr>
<tr><td class="h"><a name="1296"></a>1296</td><td></td><td></td><td></td><td></td><td class="s">         # pm times</td></tr>
<tr><td class="h"><a name="1297"></a>1297</td><td></td><td></td><td></td><td></td><td class="s">         $h+=12  unless ($h==12);</td></tr>
<tr><td class="h"><a name="1298"></a>1298</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1299"></a>1299</td><td></td><td></td><td></td><td></td><td class="s">         # am times</td></tr>
<tr><td class="h"><a name="1300"></a>1300</td><td></td><td></td><td></td><td></td><td class="s">         $h=0  if ($h==12);</td></tr>
<tr><td class="h"><a name="1301"></a>1301</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1302"></a>1302</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1303"></a>1303</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1304"></a>1304</td><td class="c0">2436</td><td class="c0"><span title="Avg 262ns">639µs</span></td><td></td><td></td><td class="s">   if (defined $h24) {</td></tr>
<tr><td class="h"><a name="1305"></a>1305</td><td></td><td></td><td></td><td></td><td class="s">      return(24,0,0);</td></tr>
<tr><td class="h"><a name="1306"></a>1306</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (defined $fh  &amp;&amp;  $fh ne &quot;&quot;) {</td></tr>
<tr><td class="h"><a name="1307"></a>1307</td><td></td><td></td><td></td><td></td><td class="s">      $fh = &quot;0.$fh&quot;;</td></tr>
<tr><td class="h"><a name="1308"></a>1308</td><td></td><td></td><td></td><td></td><td class="s">      $s  = int($fh * 3600);</td></tr>
<tr><td class="h"><a name="1309"></a>1309</td><td></td><td></td><td></td><td></td><td class="s">      $mn = int($s/60);</td></tr>
<tr><td class="h"><a name="1310"></a>1310</td><td></td><td></td><td></td><td></td><td class="s">      $s -= $mn*60;</td></tr>
<tr><td class="h"><a name="1311"></a>1311</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (defined $fm  &amp;&amp;  $fm ne &quot;&quot;) {</td></tr>
<tr><td class="h"><a name="1312"></a>1312</td><td></td><td></td><td></td><td></td><td class="s">      $fm = &quot;0.$fm&quot;;</td></tr>
<tr><td class="h"><a name="1313"></a>1313</td><td></td><td></td><td></td><td></td><td class="s">      $s  = int($fm*60);</td></tr>
<tr><td class="h"><a name="1314"></a>1314</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1315"></a>1315</td><td class="c0">2436</td><td class="c0"><span title="Avg 911ns">2.22ms</span></td><td class="c0">2436</td><td class="c3">3.65ms</td><td class="s">   ($h,$mn,$s) = $self-&gt;_def_time($h,$mn,$s,$noupdate);<div class="calls"><div class="calls_out">   # spent  3.65ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#2331">Date::Manip::Date::_def_time</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="1316"></a>1316</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">2.93ms</span></td><td></td><td></td><td class="s">   return($h,$mn,$s);</td></tr>
<tr><td class="h"><a name="1317"></a>1317</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1318"></a>1318</td><td class="c3">2</td><td class="c0"><span title="Avg 1.72ms">3.44ms</span></td><td class="c3">2</td><td class="c3">8µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 7µs (5+2) within Date::Manip::Date::BEGIN@1318 which was called:
#    once (5µs+2µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#1318">line 1318</a></div></div>use integer;<div class="calls"><div class="calls_out"># spent     7µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1318">Date::Manip::Date::BEGIN@1318</a>
# spent     2µs making 1 call to <a href="integer-pm-27-line.html#85">integer::import</a></div></div></td></tr>
<tr><td class="h"><a name="1319"></a>1319</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1320"></a>1320</td><td></td><td></td><td></td><td></td><td class="s"># Set up the regular expressions for other date and time formats. Returns the</td></tr>
<tr><td class="h"><a name="1321"></a>1321</td><td></td><td></td><td></td><td></td><td class="s"># requested regexp.</td></tr>
<tr><td class="h"><a name="1322"></a>1322</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="1323"></a>1323</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 10.8ms (349µs+10.4) within Date::Manip::Date::_other_rx which was called 7 times, avg 1.54ms/call:
#    once (50µs+4.88ms) by Date::Manip::Date::_parse_datetime_other at <a href="Date-Manip-Date-pm-12-line.html#1897">line 1897</a>
#    once (56µs+2.51ms) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1658">line 1658</a>
#    once (122µs+2.09ms) by Date::Manip::Date::_parse_date_other at <a href="Date-Manip-Date-pm-12-line.html#1984">line 1984</a>
#    once (84µs+880µs) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1723">line 1723</a>
#    once (17µs+49µs) by Date::Manip::Date::_parse_dow at <a href="Date-Manip-Date-pm-12-line.html#1764">line 1764</a>
#    once (11µs+22µs) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1708">line 1708</a>
#    once (9µs+10µs) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#427">line 427</a></div></div>sub _other_rx {</td></tr>
<tr><td class="h"><a name="1324"></a>1324</td><td class="c3">7</td><td class="c3"><span title="Avg 329ns">2µs</span></td><td></td><td></td><td class="s">   my($self,$rx) = @_;</td></tr>
<tr><td class="h"><a name="1325"></a>1325</td><td class="c3">7</td><td class="c3"><span title="Avg 300ns">2µs</span></td><td></td><td></td><td class="s">   my $dmt       = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1326"></a>1326</td><td class="c3">7</td><td class="c3"><span title="Avg 214ns">2µs</span></td><td></td><td></td><td class="s">   my $dmb       = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1327"></a>1327</td><td class="c3">7</td><td class="c3"><span title="Avg 143ns">1µs</span></td><td></td><td></td><td class="s">   $rx           = '_'  if (! defined $rx);</td></tr>
<tr><td class="h"><a name="1328"></a>1328</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1329"></a>1329</td><td class="c3">7</td><td class="c3"><span title="Avg 1µs">9µs</span></td><td></td><td></td><td class="s">   if ($rx eq 'time') {</td></tr>
<tr><td class="h"><a name="1330"></a>1330</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1331"></a>1331</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $h24    = '(?&lt;h&gt;2[0-3]|1[0-9]|0?[0-9])'; # 0-23      00-23</td></tr>
<tr><td class="h"><a name="1332"></a>1332</td><td class="c3">1</td><td class="c3"><span title="Avg 400ns">400ns</span></td><td></td><td></td><td class="s">      my $h12    = '(?&lt;h&gt;1[0-2]|0?[1-9])';        # 1-12      01-12</td></tr>
<tr><td class="h"><a name="1333"></a>1333</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $mn     = '(?&lt;mn&gt;[0-5][0-9])';           # 00-59</td></tr>
<tr><td class="h"><a name="1334"></a>1334</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $ss     = '(?&lt;s&gt;[0-5][0-9])';            # 00-59</td></tr>
<tr><td class="h"><a name="1335"></a>1335</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1336"></a>1336</td><td></td><td></td><td></td><td></td><td class="s">      # how to express fractions</td></tr>
<tr><td class="h"><a name="1337"></a>1337</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1338"></a>1338</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my($f1,$f2,$sepfr);</td></tr>
<tr><td class="h"><a name="1339"></a>1339</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      if (exists $$dmb{'data'}{'rx'}{'sepfr'}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="1340"></a>1340</td><td></td><td></td><td></td><td></td><td class="s">          $$dmb{'data'}{'rx'}{'sepfr'}) {</td></tr>
<tr><td class="h"><a name="1341"></a>1341</td><td></td><td></td><td></td><td></td><td class="s">         $sepfr = $$dmb{'data'}{'rx'}{'sepfr'};</td></tr>
<tr><td class="h"><a name="1342"></a>1342</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1343"></a>1343</td><td class="c3">1</td><td class="c3"><span title="Avg 600ns">600ns</span></td><td></td><td></td><td class="s">         $sepfr = '';</td></tr>
<tr><td class="h"><a name="1344"></a>1344</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1345"></a>1345</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1346"></a>1346</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      if ($sepfr) {</td></tr>
<tr><td class="h"><a name="1347"></a>1347</td><td></td><td></td><td></td><td></td><td class="s">         $f1 = &quot;(?:[.,]|$sepfr)&quot;;</td></tr>
<tr><td class="h"><a name="1348"></a>1348</td><td></td><td></td><td></td><td></td><td class="s">         $f2 = &quot;(?:[.,:]|$sepfr)&quot;;</td></tr>
<tr><td class="h"><a name="1349"></a>1349</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1350"></a>1350</td><td class="c3">1</td><td class="c3"><span title="Avg 400ns">400ns</span></td><td></td><td></td><td class="s">         $f1 = &quot;[.,]&quot;;</td></tr>
<tr><td class="h"><a name="1351"></a>1351</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">         $f2 = &quot;[.,:]&quot;;</td></tr>
<tr><td class="h"><a name="1352"></a>1352</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1353"></a>1353</td><td class="c3">1</td><td class="c3"><span title="Avg 700ns">700ns</span></td><td></td><td></td><td class="s">      my $fh     = &quot;(?:$f1(?&lt;fh&gt;\\d*))&quot;;  # fractional hours (keep)</td></tr>
<tr><td class="h"><a name="1354"></a>1354</td><td class="c3">1</td><td class="c3"><span title="Avg 600ns">600ns</span></td><td></td><td></td><td class="s">      my $fm     = &quot;(?:$f1(?&lt;fm&gt;\\d*))&quot;;  # fractional minutes (keep)</td></tr>
<tr><td class="h"><a name="1355"></a>1355</td><td class="c3">1</td><td class="c3"><span title="Avg 400ns">400ns</span></td><td></td><td></td><td class="s">      my $fs     = &quot;(?:$f2\\d*)&quot;;         # fractional seconds</td></tr>
<tr><td class="h"><a name="1356"></a>1356</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1357"></a>1357</td><td></td><td></td><td></td><td></td><td class="s">      # AM/PM</td></tr>
<tr><td class="h"><a name="1358"></a>1358</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1359"></a>1359</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my($ampm);</td></tr>
<tr><td class="h"><a name="1360"></a>1360</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      if (exists $$dmb{'data'}{'rx'}{'ampm'}) {</td></tr>
<tr><td class="h"><a name="1361"></a>1361</td><td></td><td></td><td></td><td></td><td class="s">         $ampm   = &quot;(?:\\s*(?&lt;ampm&gt;$$dmb{data}{rx}{ampm}[0]))&quot;;</td></tr>
<tr><td class="h"><a name="1362"></a>1362</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1363"></a>1363</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1364"></a>1364</td><td></td><td></td><td></td><td></td><td class="s">      # H:MN and MN:S separators</td></tr>
<tr><td class="h"><a name="1365"></a>1365</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1366"></a>1366</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my @hm = (&quot;\Q:\E&quot;);</td></tr>
<tr><td class="h"><a name="1367"></a>1367</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my @ms = (&quot;\Q:\E&quot;);</td></tr>
<tr><td class="h"><a name="1368"></a>1368</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td class="c3">1</td><td class="c3">6µs</td><td class="s">      if ($dmb-&gt;_config('periodtimesep')) {<div class="calls"><div class="calls_out">      # spent     6µs making 1 call to <a href="Date-Manip-TZ_Base-pm-30-line.html#162">Date::Manip::TZ_Base::_config</a></div></div></td></tr>
<tr><td class="h"><a name="1369"></a>1369</td><td></td><td></td><td></td><td></td><td class="s">         push(@hm,&quot;\Q.\E&quot;);</td></tr>
<tr><td class="h"><a name="1370"></a>1370</td><td></td><td></td><td></td><td></td><td class="s">         push(@ms,&quot;\Q.\E&quot;);</td></tr>
<tr><td class="h"><a name="1371"></a>1371</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1372"></a>1372</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      if (exists $$dmb{'data'}{'rx'}{'sephm'}   &amp;&amp;</td></tr>
<tr><td class="h"><a name="1373"></a>1373</td><td></td><td></td><td></td><td></td><td class="s">          defined $$dmb{'data'}{'rx'}{'sephm'}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="1374"></a>1374</td><td></td><td></td><td></td><td></td><td class="s">          exists $$dmb{'data'}{'rx'}{'sepms'}   &amp;&amp;</td></tr>
<tr><td class="h"><a name="1375"></a>1375</td><td></td><td></td><td></td><td></td><td class="s">          defined $$dmb{'data'}{'rx'}{'sepms'}) {</td></tr>
<tr><td class="h"><a name="1376"></a>1376</td><td></td><td></td><td></td><td></td><td class="s">         push(@hm,@{ $$dmb{'data'}{'rx'}{'sephm'} });</td></tr>
<tr><td class="h"><a name="1377"></a>1377</td><td></td><td></td><td></td><td></td><td class="s">         push(@ms,@{ $$dmb{'data'}{'rx'}{'sepms'} });</td></tr>
<tr><td class="h"><a name="1378"></a>1378</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1379"></a>1379</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1380"></a>1380</td><td></td><td></td><td></td><td></td><td class="s">      # How to express the time</td></tr>
<tr><td class="h"><a name="1381"></a>1381</td><td></td><td></td><td></td><td></td><td class="s">      #  matches = (H, FH, MN, FMN, S, AM, TZSTRING, ZONE, ABB, OFF, ABB)</td></tr>
<tr><td class="h"><a name="1382"></a>1382</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1383"></a>1383</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      my $timerx;</td></tr>
<tr><td class="h"><a name="1384"></a>1384</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1385"></a>1385</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      for (my $i=0; $i&lt;=$#hm; $i++) {</td></tr>
<tr><td class="h"><a name="1386"></a>1386</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">         my $hm = $hm[$i];</td></tr>
<tr><td class="h"><a name="1387"></a>1387</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">         my $ms = $ms[$i];</td></tr>
<tr><td class="h"><a name="1388"></a>1388</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h12}$hm${mn}$ms${ss}${fs}?${ampm}?|&quot; # H12:MN:SS[,S+] [AM]</td></tr>
<tr><td class="h"><a name="1389"></a>1389</td><td></td><td></td><td></td><td></td><td class="s">           if ($ampm);</td></tr>
<tr><td class="h"><a name="1390"></a>1390</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h24}$hm${mn}$ms${ss}${fs}?|&quot; .       # H24:MN:SS[,S+]</td></tr>
<tr><td class="h"><a name="1391"></a>1391</td><td></td><td></td><td></td><td></td><td class="s">                    &quot;(?&lt;h&gt;24)$hm(?&lt;mn&gt;00)$ms(?&lt;s&gt;00)|&quot;;     # 24:00:00</td></tr>
<tr><td class="h"><a name="1392"></a>1392</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1393"></a>1393</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      for (my $i=0; $i&lt;=$#hm; $i++) {</td></tr>
<tr><td class="h"><a name="1394"></a>1394</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">         my $hm = $hm[$i];</td></tr>
<tr><td class="h"><a name="1395"></a>1395</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">         my $ms = $ms[$i];</td></tr>
<tr><td class="h"><a name="1396"></a>1396</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h12}$hm${mn}${fm}${ampm}?|&quot;          # H12:MN,M+ [AM]</td></tr>
<tr><td class="h"><a name="1397"></a>1397</td><td></td><td></td><td></td><td></td><td class="s">           if ($ampm);</td></tr>
<tr><td class="h"><a name="1398"></a>1398</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h24}$hm${mn}${fm}|&quot;;                 # H24:MN,M+</td></tr>
<tr><td class="h"><a name="1399"></a>1399</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1400"></a>1400</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      for (my $i=0; $i&lt;=$#hm; $i++) {</td></tr>
<tr><td class="h"><a name="1401"></a>1401</td><td class="c3">1</td><td class="c3"><span title="Avg 400ns">400ns</span></td><td></td><td></td><td class="s">         my $hm = $hm[$i];</td></tr>
<tr><td class="h"><a name="1402"></a>1402</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">         my $ms = $ms[$i];</td></tr>
<tr><td class="h"><a name="1403"></a>1403</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h12}$hm${mn}${ampm}?|&quot;               # H12:MN [AM]</td></tr>
<tr><td class="h"><a name="1404"></a>1404</td><td></td><td></td><td></td><td></td><td class="s">           if ($ampm);</td></tr>
<tr><td class="h"><a name="1405"></a>1405</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">         $timerx .= &quot;${h24}$hm${mn}|&quot; .                     # H24:MN</td></tr>
<tr><td class="h"><a name="1406"></a>1406</td><td></td><td></td><td></td><td></td><td class="s">                    &quot;(?&lt;h&gt;24)$hm(?&lt;mn&gt;00)|&quot;;                # 24:00</td></tr>
<tr><td class="h"><a name="1407"></a>1407</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1408"></a>1408</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1409"></a>1409</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $timerx .= &quot;${h12}${fh}${ampm}|&quot;                      # H12,H+ AM</td></tr>
<tr><td class="h"><a name="1410"></a>1410</td><td></td><td></td><td></td><td></td><td class="s">        if ($ampm);</td></tr>
<tr><td class="h"><a name="1411"></a>1411</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1412"></a>1412</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      $timerx .= &quot;${h12}${ampm}|&quot;  if ($ampm);              # H12 AM</td></tr>
<tr><td class="h"><a name="1413"></a>1413</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1414"></a>1414</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      $timerx .= &quot;${h24}${fh}|&quot;;                            # H24,H+</td></tr>
<tr><td class="h"><a name="1415"></a>1415</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1416"></a>1416</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      chop($timerx);                                        # remove trailing pipe</td></tr>
<tr><td class="h"><a name="1417"></a>1417</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1418"></a>1418</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td class="c3">1</td><td class="c3">1µs</td><td class="s">      my $zrx    = $dmt-&gt;_zrx('zrx');<div class="calls"><div class="calls_out">      # spent     1µs making 1 call to <a href="Date-Manip-TZ-pm-39-line.html#1531">Date::Manip::TZ::_zrx</a></div></div></td></tr>
<tr><td class="h"><a name="1419"></a>1419</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $at     = $$dmb{'data'}{'rx'}{'at'};</td></tr>
<tr><td class="h"><a name="1420"></a>1420</td><td class="c3">1</td><td class="c3"><span title="Avg 12µs">12µs</span></td><td class="c3">2</td><td class="c3">9µs</td><td class="s">      my $atrx   = qr/(?:^|\s+)(?:$at)\s+/;<div class="calls"><div class="calls_out">      # spent     8µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   600ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1421"></a>1421</td><td class="c3">1</td><td class="c0"><span title="Avg 2.50ms">2.50ms</span></td><td class="c3">2</td><td class="c3">2.49ms</td><td class="s">      $timerx    = qr/(?:$atrx|^|\s+)(?:$timerx)(?:\s*$zrx)?(?:\s+|$)/i;<div class="calls"><div class="calls_out">      # spent  2.49ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   800ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1422"></a>1422</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1423"></a>1423</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $timerx;</td></tr>
<tr><td class="h"><a name="1424"></a>1424</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1425"></a>1425</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'common_1') {</td></tr>
<tr><td class="h"><a name="1426"></a>1426</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1427"></a>1427</td><td></td><td></td><td></td><td></td><td class="s">      # These are of the format M/D/Y</td></tr>
<tr><td class="h"><a name="1428"></a>1428</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1429"></a>1429</td><td></td><td></td><td></td><td></td><td class="s">      # Do NOT replace &lt;m&gt; and &lt;d&gt; with a regular expression to</td></tr>
<tr><td class="h"><a name="1430"></a>1430</td><td></td><td></td><td></td><td></td><td class="s">      # match 1-12 since the DateFormat config may reverse the two.</td></tr>
<tr><td class="h"><a name="1431"></a>1431</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $y4  = '(?&lt;y&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="1432"></a>1432</td><td class="c3">1</td><td class="c3"><span title="Avg 400ns">400ns</span></td><td></td><td></td><td class="s">      my $y2  = '(?&lt;y&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1433"></a>1433</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $m   = '(?&lt;m&gt;\d\d?)';</td></tr>
<tr><td class="h"><a name="1434"></a>1434</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $d   = '(?&lt;d&gt;\d\d?)';</td></tr>
<tr><td class="h"><a name="1435"></a>1435</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $sep = '(?&lt;sep&gt;[\s\.\/\-])';</td></tr>
<tr><td class="h"><a name="1436"></a>1436</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1437"></a>1437</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $daterx =</td></tr>
<tr><td class="h"><a name="1438"></a>1438</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${m}${sep}${d}\\k&lt;sep&gt;$y4|&quot; .  # M/D/YYYY</td></tr>
<tr><td class="h"><a name="1439"></a>1439</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${m}${sep}${d}\\k&lt;sep&gt;$y2|&quot; .  # M/D/YY</td></tr>
<tr><td class="h"><a name="1440"></a>1440</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${m}${sep}${d}&quot;;               # M/D</td></tr>
<tr><td class="h"><a name="1441"></a>1441</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1442"></a>1442</td><td class="c3">1</td><td class="c3"><span title="Avg 25µs">25µs</span></td><td class="c3">2</td><td class="c3">22µs</td><td class="s">      $daterx = qr/^\s*(?:$daterx)\s*$/;<div class="calls"><div class="calls_out">      # spent    21µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   700ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1443"></a>1443</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $daterx;</td></tr>
<tr><td class="h"><a name="1444"></a>1444</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1445"></a>1445</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'common_2') {</td></tr>
<tr><td class="h"><a name="1446"></a>1446</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1447"></a>1447</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $abb = $$dmb{'data'}{'rx'}{'month_abb'}[0];</td></tr>
<tr><td class="h"><a name="1448"></a>1448</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $nam = $$dmb{'data'}{'rx'}{'month_name'}[0];</td></tr>
<tr><td class="h"><a name="1449"></a>1449</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1450"></a>1450</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $y4  = '(?&lt;y&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="1451"></a>1451</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $y2  = '(?&lt;y&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1452"></a>1452</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $m   = '(?&lt;m&gt;\d\d?)';</td></tr>
<tr><td class="h"><a name="1453"></a>1453</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $d   = '(?&lt;d&gt;\d\d?)';</td></tr>
<tr><td class="h"><a name="1454"></a>1454</td><td class="c3">1</td><td class="c3"><span title="Avg 200ns">200ns</span></td><td></td><td></td><td class="s">      my $dd  = '(?&lt;d&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1455"></a>1455</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $mmm = &quot;(?:(?&lt;mmm&gt;$abb)|(?&lt;month&gt;$nam))&quot;;</td></tr>
<tr><td class="h"><a name="1456"></a>1456</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $sep = '(?&lt;sep&gt;[\s\.\/\-])';</td></tr>
<tr><td class="h"><a name="1457"></a>1457</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1458"></a>1458</td><td class="c3">1</td><td class="c3"><span title="Avg 24µs">24µs</span></td><td></td><td></td><td class="s">      my $daterx =</td></tr>
<tr><td class="h"><a name="1459"></a>1459</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}${sep}${m}\\k&lt;sep&gt;$d|&quot; .        # YYYY/M/D</td></tr>
<tr><td class="h"><a name="1460"></a>1460</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1461"></a>1461</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}\\s*${dd}\\s*${y4}|&quot; .         # mmmDDYYYY</td></tr>
<tr><td class="h"><a name="1462"></a>1462</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}\\s*${dd}\\s*${y2}|&quot; .         # mmmDDYY</td></tr>
<tr><td class="h"><a name="1463"></a>1463</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}\\s*${d}|&quot; .                   # mmmD</td></tr>
<tr><td class="h"><a name="1464"></a>1464</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}\\s*${mmm}\\s*${y4}|&quot; .          # DmmmYYYY</td></tr>
<tr><td class="h"><a name="1465"></a>1465</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}\\s*${mmm}\\s*${y2}|&quot; .          # DmmmYY</td></tr>
<tr><td class="h"><a name="1466"></a>1466</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}\\s*${mmm}|&quot; .                   # Dmmm</td></tr>
<tr><td class="h"><a name="1467"></a>1467</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\s*${mmm}\\s*${d}|&quot; .          # YYYYmmmD</td></tr>
<tr><td class="h"><a name="1468"></a>1468</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1469"></a>1469</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}${sep}${d}\\k&lt;sep&gt;${y4}|&quot; .    # mmm/D/YYYY</td></tr>
<tr><td class="h"><a name="1470"></a>1470</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}${sep}${d}\\k&lt;sep&gt;${y2}|&quot; .    # mmm/D/YY</td></tr>
<tr><td class="h"><a name="1471"></a>1471</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}${sep}${d}|&quot; .                 # mmm/D</td></tr>
<tr><td class="h"><a name="1472"></a>1472</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}${sep}${mmm}\\k&lt;sep&gt;${y4}|&quot; .    # D/mmm/YYYY</td></tr>
<tr><td class="h"><a name="1473"></a>1473</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}${sep}${mmm}\\k&lt;sep&gt;${y2}|&quot; .    # D/mmm/YY</td></tr>
<tr><td class="h"><a name="1474"></a>1474</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}${sep}${mmm}|&quot; .                 # D/mmm</td></tr>
<tr><td class="h"><a name="1475"></a>1475</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}${sep}${mmm}\\k&lt;sep&gt;${d}|&quot; .    # YYYY/mmm/D</td></tr>
<tr><td class="h"><a name="1476"></a>1476</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1477"></a>1477</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}${sep}?${d}\\s+${y2}|&quot; .       # mmmD YY      mmm/D YY</td></tr>
<tr><td class="h"><a name="1478"></a>1478</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}${sep}?${d}\\s+${y4}|&quot; .       # mmmD YYYY    mmm/D YYYY</td></tr>
<tr><td class="h"><a name="1479"></a>1479</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}${sep}?${mmm}\\s+${y2}|&quot; .       # Dmmm YY      D/mmm YY</td></tr>
<tr><td class="h"><a name="1480"></a>1480</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${d}${sep}?${mmm}\\s+${y4}|&quot; .       # Dmmm YYYY    D/mmm YYYY</td></tr>
<tr><td class="h"><a name="1481"></a>1481</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1482"></a>1482</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y2}\\s+${mmm}${sep}?${d}|&quot; .       # YY   mmmD    YY   mmm/D</td></tr>
<tr><td class="h"><a name="1483"></a>1483</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\s+${mmm}${sep}?${d}|&quot; .       # YYYY mmmD    YYYY mmm/D</td></tr>
<tr><td class="h"><a name="1484"></a>1484</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y2}\\s+${d}${sep}?${mmm}|&quot; .       # YY   Dmmm    YY   D/mmm</td></tr>
<tr><td class="h"><a name="1485"></a>1485</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}\\s+${d}${sep}?${mmm}|&quot; .       # YYYY Dmmm    YYYY D/mmm</td></tr>
<tr><td class="h"><a name="1486"></a>1486</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1487"></a>1487</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${y4}:${m}:${d}&quot;;                    # YYYY:MM:DD</td></tr>
<tr><td class="h"><a name="1488"></a>1488</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1489"></a>1489</td><td class="c3">1</td><td class="c0"><span title="Avg 931µs">931µs</span></td><td class="c3">2</td><td class="c3">880µs</td><td class="s">      $daterx = qr/^\s*(?:$daterx)\s*$/i;<div class="calls"><div class="calls_out">      # spent   879µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     1µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1490"></a>1490</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $daterx;</td></tr>
<tr><td class="h"><a name="1491"></a>1491</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1492"></a>1492</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'dow') {</td></tr>
<tr><td class="h"><a name="1493"></a>1493</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1494"></a>1494</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $day_abb  = $$dmb{'data'}{'rx'}{'day_abb'}[0];</td></tr>
<tr><td class="h"><a name="1495"></a>1495</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $day_name = $$dmb{'data'}{'rx'}{'day_name'}[0];</td></tr>
<tr><td class="h"><a name="1496"></a>1496</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1497"></a>1497</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $on     = $$dmb{'data'}{'rx'}{'on'};</td></tr>
<tr><td class="h"><a name="1498"></a>1498</td><td class="c3">1</td><td class="c3"><span title="Avg 16µs">16µs</span></td><td class="c3">2</td><td class="c3">13µs</td><td class="s">      my $onrx   = qr/(?:^|\s+)(?:$on)\s+/;<div class="calls"><div class="calls_out">      # spent     8µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     5µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1499"></a>1499</td><td class="c3">1</td><td class="c3"><span title="Avg 41µs">41µs</span></td><td class="c3">2</td><td class="c3">36µs</td><td class="s">      my $dowrx  = qr/(?:$onrx|^|\s+)(?&lt;dow&gt;$day_name|$day_abb)($|\s+)/i;<div class="calls"><div class="calls_out">      # spent    35µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   700ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1500"></a>1500</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1501"></a>1501</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $dowrx;</td></tr>
<tr><td class="h"><a name="1502"></a>1502</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1503"></a>1503</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'ignore') {</td></tr>
<tr><td class="h"><a name="1504"></a>1504</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1505"></a>1505</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">      my $of    = $$dmb{'data'}{'rx'}{'of'};</td></tr>
<tr><td class="h"><a name="1506"></a>1506</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1507"></a>1507</td><td class="c3">1</td><td class="c3"><span title="Avg 15µs">15µs</span></td><td class="c3">2</td><td class="c3">10µs</td><td class="s">      my $ignrx = qr/(?:^|\s+)(?&lt;of&gt;$of)(\s+|$)/;<div class="calls"><div class="calls_out">      # spent     9µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   600ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1508"></a>1508</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $ignrx;</td></tr>
<tr><td class="h"><a name="1509"></a>1509</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1510"></a>1510</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'miscdatetime') {</td></tr>
<tr><td class="h"><a name="1511"></a>1511</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1512"></a>1512</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $special  = $$dmb{'data'}{'rx'}{'offset_time'}[0];</td></tr>
<tr><td class="h"><a name="1513"></a>1513</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1514"></a>1514</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $special     = &quot;(?&lt;special&gt;$special)&quot;;</td></tr>
<tr><td class="h"><a name="1515"></a>1515</td><td class="c3">1</td><td class="c3"><span title="Avg 600ns">600ns</span></td><td></td><td></td><td class="s">      my $secs     = &quot;(?&lt;epoch&gt;[-+]?\\d+)&quot;;</td></tr>
<tr><td class="h"><a name="1516"></a>1516</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">      my $abb      = $$dmb{'data'}{'rx'}{'month_abb'}[0];</td></tr>
<tr><td class="h"><a name="1517"></a>1517</td><td class="c3">1</td><td class="c3"><span title="Avg 600ns">600ns</span></td><td></td><td></td><td class="s">      my $mmm      = &quot;(?&lt;mmm&gt;$abb)&quot;;</td></tr>
<tr><td class="h"><a name="1518"></a>1518</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $y4       = '(?&lt;y&gt;\d\d\d\d)';</td></tr>
<tr><td class="h"><a name="1519"></a>1519</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $dd       = '(?&lt;d&gt;\d\d)';</td></tr>
<tr><td class="h"><a name="1520"></a>1520</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $h24      = '(?&lt;h&gt;2[0-3]|[01][0-9])';      # 00-23</td></tr>
<tr><td class="h"><a name="1521"></a>1521</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $mn       = '(?&lt;mn&gt;[0-5][0-9])';           # 00-59</td></tr>
<tr><td class="h"><a name="1522"></a>1522</td><td class="c3">1</td><td class="c3"><span title="Avg 100ns">100ns</span></td><td></td><td></td><td class="s">      my $ss       = '(?&lt;s&gt;[0-5][0-9])';            # 00-59</td></tr>
<tr><td class="h"><a name="1523"></a>1523</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td class="c3">1</td><td class="c3">2µs</td><td class="s">      my $offrx    = $dmt-&gt;_zrx('offrx');<div class="calls"><div class="calls_out">      # spent     2µs making 1 call to <a href="Date-Manip-TZ-pm-39-line.html#1531">Date::Manip::TZ::_zrx</a></div></div></td></tr>
<tr><td class="h"><a name="1524"></a>1524</td><td class="c3">1</td><td class="c3"><span title="Avg 700ns">700ns</span></td><td class="c3">1</td><td class="c3">700ns</td><td class="s">      my $zrx      = $dmt-&gt;_zrx('zrx');<div class="calls"><div class="calls_out">      # spent   700ns making 1 call to <a href="Date-Manip-TZ-pm-39-line.html#1531">Date::Manip::TZ::_zrx</a></div></div></td></tr>
<tr><td class="h"><a name="1525"></a>1525</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1526"></a>1526</td><td class="c3">1</td><td class="c3"><span title="Avg 19µs">19µs</span></td><td></td><td></td><td class="s">      my $daterx   =</td></tr>
<tr><td class="h"><a name="1527"></a>1527</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${special}|&quot; .                 # now</td></tr>
<tr><td class="h"><a name="1528"></a>1528</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${special}\\s+${zrx}|&quot; .       # now EDT</td></tr>
<tr><td class="h"><a name="1529"></a>1529</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1530"></a>1530</td><td></td><td></td><td></td><td></td><td class="s">        &quot;epoch\\s+$secs|&quot; .             # epoch SECS</td></tr>
<tr><td class="h"><a name="1531"></a>1531</td><td></td><td></td><td></td><td></td><td class="s">        &quot;epoch\\s+$secs\\s+${zrx}|&quot; .   # epoch SECS EDT</td></tr>
<tr><td class="h"><a name="1532"></a>1532</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1533"></a>1533</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${dd}\\/${mmm}\\/${y4}:${h24}:${mn}:${ss}\\s*${offrx}&quot;;</td></tr>
<tr><td class="h"><a name="1534"></a>1534</td><td></td><td></td><td></td><td></td><td class="s">                              # Common log format: 10/Oct/2000:13:55:36 -0700</td></tr>
<tr><td class="h"><a name="1535"></a>1535</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1536"></a>1536</td><td class="c3">1</td><td class="c0"><span title="Avg 4.89ms">4.89ms</span></td><td class="c3">2</td><td class="c2">4.88ms</td><td class="s">      $daterx = qr/^\s*(?:$daterx)\s*$/i;<div class="calls"><div class="calls_out">      # spent  4.87ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent   900ns making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1537"></a>1537</td><td class="c3">1</td><td class="c3"><span title="Avg 4µs">4µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $daterx;</td></tr>
<tr><td class="h"><a name="1538"></a>1538</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1539"></a>1539</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($rx eq 'misc') {</td></tr>
<tr><td class="h"><a name="1540"></a>1540</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1541"></a>1541</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $abb      = $$dmb{'data'}{'rx'}{'month_abb'}[0];</td></tr>
<tr><td class="h"><a name="1542"></a>1542</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $nam      = $$dmb{'data'}{'rx'}{'month_name'}[0];</td></tr>
<tr><td class="h"><a name="1543"></a>1543</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $next     = $$dmb{'data'}{'rx'}{'nextprev'}[0];</td></tr>
<tr><td class="h"><a name="1544"></a>1544</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">      my $last     = $$dmb{'data'}{'rx'}{'last'};</td></tr>
<tr><td class="h"><a name="1545"></a>1545</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $yf       = $$dmb{data}{rx}{fields}[1];</td></tr>
<tr><td class="h"><a name="1546"></a>1546</td><td class="c3">1</td><td class="c3"><span title="Avg 700ns">700ns</span></td><td></td><td></td><td class="s">      my $mf       = $$dmb{data}{rx}{fields}[2];</td></tr>
<tr><td class="h"><a name="1547"></a>1547</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $wf       = $$dmb{data}{rx}{fields}[3];</td></tr>
<tr><td class="h"><a name="1548"></a>1548</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      my $df       = $$dmb{data}{rx}{fields}[4];</td></tr>
<tr><td class="h"><a name="1549"></a>1549</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $nth      = $$dmb{'data'}{'rx'}{'nth'}[0];</td></tr>
<tr><td class="h"><a name="1550"></a>1550</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $nth_wom  = $$dmb{'data'}{'rx'}{'nth_wom'}[0];</td></tr>
<tr><td class="h"><a name="1551"></a>1551</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      my $special  = $$dmb{'data'}{'rx'}{'offset_date'}[0];</td></tr>
<tr><td class="h"><a name="1552"></a>1552</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1553"></a>1553</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      my $y        = '(?:(?&lt;y&gt;\d\d\d\d)|(?&lt;y&gt;\d\d))';</td></tr>
<tr><td class="h"><a name="1554"></a>1554</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      my $mmm      = &quot;(?:(?&lt;mmm&gt;$abb)|(?&lt;month&gt;$nam))&quot;;</td></tr>
<tr><td class="h"><a name="1555"></a>1555</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">      $next        = &quot;(?&lt;next&gt;$next)&quot;;</td></tr>
<tr><td class="h"><a name="1556"></a>1556</td><td class="c3">1</td><td class="c3"><span title="Avg 800ns">800ns</span></td><td></td><td></td><td class="s">      $last        = &quot;(?&lt;last&gt;$last)&quot;;</td></tr>
<tr><td class="h"><a name="1557"></a>1557</td><td class="c3">1</td><td class="c3"><span title="Avg 500ns">500ns</span></td><td></td><td></td><td class="s">      $yf          = &quot;(?&lt;field_y&gt;$yf)&quot;;</td></tr>
<tr><td class="h"><a name="1558"></a>1558</td><td class="c3">1</td><td class="c3"><span title="Avg 600ns">600ns</span></td><td></td><td></td><td class="s">      $mf          = &quot;(?&lt;field_m&gt;$mf)&quot;;</td></tr>
<tr><td class="h"><a name="1559"></a>1559</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      $wf          = &quot;(?&lt;field_w&gt;$wf)&quot;;</td></tr>
<tr><td class="h"><a name="1560"></a>1560</td><td class="c3">1</td><td class="c3"><span title="Avg 300ns">300ns</span></td><td></td><td></td><td class="s">      $df          = &quot;(?&lt;field_d&gt;$df)&quot;;</td></tr>
<tr><td class="h"><a name="1561"></a>1561</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      my $fld      = &quot;(?:$yf|$mf|$wf)&quot;;</td></tr>
<tr><td class="h"><a name="1562"></a>1562</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $nth         = &quot;(?&lt;nth&gt;$nth)&quot;;</td></tr>
<tr><td class="h"><a name="1563"></a>1563</td><td class="c3">1</td><td class="c3"><span title="Avg 900ns">900ns</span></td><td></td><td></td><td class="s">      $nth_wom     = &quot;(?&lt;nth&gt;$nth_wom)&quot;;</td></tr>
<tr><td class="h"><a name="1564"></a>1564</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">      $special     = &quot;(?&lt;special&gt;$special)&quot;;</td></tr>
<tr><td class="h"><a name="1565"></a>1565</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1566"></a>1566</td><td class="c3">1</td><td class="c3"><span title="Avg 26µs">26µs</span></td><td></td><td></td><td class="s">      my $daterx   =</td></tr>
<tr><td class="h"><a name="1567"></a>1567</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${mmm}\\s+${nth}\\s*$y?|&quot; .    # Dec 1st [1970]</td></tr>
<tr><td class="h"><a name="1568"></a>1568</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth}\\s+${mmm}\\s*$y?|&quot; .    # 1st Dec [1970]</td></tr>
<tr><td class="h"><a name="1569"></a>1569</td><td></td><td></td><td></td><td></td><td class="s">        &quot;$y\\s+${mmm}\\s+${nth}|&quot; .     # 1970 Dec 1st</td></tr>
<tr><td class="h"><a name="1570"></a>1570</td><td></td><td></td><td></td><td></td><td class="s">        &quot;$y\\s+${nth}\\s+${mmm}|&quot; .     # 1970 1st Dec</td></tr>
<tr><td class="h"><a name="1571"></a>1571</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1572"></a>1572</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${next}\\s+${fld}|&quot; .          # next year, next month, next week</td></tr>
<tr><td class="h"><a name="1573"></a>1573</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${next}|&quot; .                    # next friday</td></tr>
<tr><td class="h"><a name="1574"></a>1574</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1575"></a>1575</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${last}\\s+${mmm}\\s*$y?|&quot; .   # last friday in october 95</td></tr>
<tr><td class="h"><a name="1576"></a>1576</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${last}\\s+${df}\\s+${mmm}\\s*$y?|&quot; .</td></tr>
<tr><td class="h"><a name="1577"></a>1577</td><td></td><td></td><td></td><td></td><td class="s">                                        # last day in october 95</td></tr>
<tr><td class="h"><a name="1578"></a>1578</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${last}\\s*$y?|&quot; .             # last friday in 95</td></tr>
<tr><td class="h"><a name="1579"></a>1579</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1580"></a>1580</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth_wom}\\s+${mmm}\\s*$y?|&quot; .</td></tr>
<tr><td class="h"><a name="1581"></a>1581</td><td></td><td></td><td></td><td></td><td class="s">                                        # nth DoW in MMM [YYYY]</td></tr>
<tr><td class="h"><a name="1582"></a>1582</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth}\\s*$y?|&quot; .              # nth DoW in [YYYY]</td></tr>
<tr><td class="h"><a name="1583"></a>1583</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1584"></a>1584</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth}\\s+$df\\s+${mmm}\\s*$y?|&quot; .</td></tr>
<tr><td class="h"><a name="1585"></a>1585</td><td></td><td></td><td></td><td></td><td class="s">                                        # nth day in MMM [YYYY]</td></tr>
<tr><td class="h"><a name="1586"></a>1586</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1587"></a>1587</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth}\\s+${wf}\\s*$y?|&quot; .     # DoW Nth week [YYYY]</td></tr>
<tr><td class="h"><a name="1588"></a>1588</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${wf}\\s+(?&lt;n&gt;\\d+)\\s*$y?|&quot; . # DoW week N [YYYY]</td></tr>
<tr><td class="h"><a name="1589"></a>1589</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1590"></a>1590</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${special}|&quot; .                 # today, tomorrow</td></tr>
<tr><td class="h"><a name="1591"></a>1591</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${special}\\s+${wf}|&quot; .        # today week</td></tr>
<tr><td class="h"><a name="1592"></a>1592</td><td></td><td></td><td></td><td></td><td class="s">                                        #   British: same as 1 week from today</td></tr>
<tr><td class="h"><a name="1593"></a>1593</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1594"></a>1594</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${nth}|&quot; .                     # nth</td></tr>
<tr><td class="h"><a name="1595"></a>1595</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1596"></a>1596</td><td></td><td></td><td></td><td></td><td class="s">        &quot;${wf}&quot;;                        # monday week</td></tr>
<tr><td class="h"><a name="1597"></a>1597</td><td></td><td></td><td></td><td></td><td class="s">                                        #   British: same as 'in 1 week on monday'</td></tr>
<tr><td class="h"><a name="1598"></a>1598</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1599"></a>1599</td><td class="c3">1</td><td class="c0"><span title="Avg 2.15ms">2.15ms</span></td><td class="c3">2</td><td class="c3">2.09ms</td><td class="s">      $daterx = qr/^\s*(?:$daterx)\s*$/i;<div class="calls"><div class="calls_out">      # spent  2.09ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>
      # spent     2µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_qr">Date::Manip::Date::CORE:qr</a></div></div></td></tr>
<tr><td class="h"><a name="1600"></a>1600</td><td class="c3">1</td><td class="c3"><span title="Avg 2µs">2µs</span></td><td></td><td></td><td class="s">      $$dmb{'data'}{'rx'}{'other'}{$rx} = $daterx;</td></tr>
<tr><td class="h"><a name="1601"></a>1601</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1602"></a>1602</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1603"></a>1603</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1604"></a>1604</td><td class="c3">7</td><td class="c3"><span title="Avg 3µs">24µs</span></td><td></td><td></td><td class="s">   return $$dmb{'data'}{'rx'}{'other'}{$rx};</td></tr>
<tr><td class="h"><a name="1605"></a>1605</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1606"></a>1606</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1607"></a>1607</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 155ms (74.1+80.9) within Date::Manip::Date::_parse_time which was called 2436 times, avg 64µs/call:
# 2436 times (74.1ms+80.9ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#170">line 170</a>, avg 64µs/call</div></div>sub _parse_time {</td></tr>
<tr><td class="h"><a name="1608"></a>1608</td><td class="c0">2436</td><td class="c0"><span title="Avg 395ns">962µs</span></td><td></td><td></td><td class="s">   my($self,$caller,$string,$noupdate,%opts) = @_;</td></tr>
<tr><td class="h"><a name="1609"></a>1609</td><td class="c0">2436</td><td class="c2"><span title="Avg 146ns">355µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1610"></a>1610</td><td class="c0">2436</td><td class="c2"><span title="Avg 137ns">333µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1611"></a>1611</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1612"></a>1612</td><td class="c0">2436</td><td class="c3"><span title="Avg 109ns">265µs</span></td><td></td><td></td><td class="s">   my($timerx,$h,$mn,$s,$fh,$fm,$h24,$ampm,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1613"></a>1613</td><td class="c0">2436</td><td class="c3"><span title="Avg 99ns">242µs</span></td><td></td><td></td><td class="s">   my $got_time = 0;</td></tr>
<tr><td class="h"><a name="1614"></a>1614</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1615"></a>1615</td><td></td><td></td><td></td><td></td><td class="s">   # Check for ISO 8601 time</td></tr>
<tr><td class="h"><a name="1616"></a>1616</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="1617"></a>1617</td><td></td><td></td><td></td><td></td><td class="s">   # This is only called via. parse_time (parse_date uses a regexp</td></tr>
<tr><td class="h"><a name="1618"></a>1618</td><td></td><td></td><td></td><td></td><td class="s">   # that matches a full ISO 8601 date/time instead of parsing them</td></tr>
<tr><td class="h"><a name="1619"></a>1619</td><td></td><td></td><td></td><td></td><td class="s">   # separately.  Since some ISO 8601 times are a substring of non-ISO</td></tr>
<tr><td class="h"><a name="1620"></a>1620</td><td></td><td></td><td></td><td></td><td class="s">   # 8601 times (i.e. 12:30 is a substring of '12:30 PM'), we need to</td></tr>
<tr><td class="h"><a name="1621"></a>1621</td><td></td><td></td><td></td><td></td><td class="s">   # match entire strings here.</td></tr>
<tr><td class="h"><a name="1622"></a>1622</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1623"></a>1623</td><td class="c0">2436</td><td class="c2"><span title="Avg 145ns">353µs</span></td><td></td><td></td><td class="s">   if ($caller eq 'parse_time') {</td></tr>
<tr><td class="h"><a name="1624"></a>1624</td><td></td><td></td><td></td><td></td><td class="s">      $timerx = (exists $$dmb{'data'}{'rx'}{'iso'}{'time'} ?</td></tr>
<tr><td class="h"><a name="1625"></a>1625</td><td></td><td></td><td></td><td></td><td class="s">                 $$dmb{'data'}{'rx'}{'iso'}{'time'} :</td></tr>
<tr><td class="h"><a name="1626"></a>1626</td><td></td><td></td><td></td><td></td><td class="s">                 $self-&gt;_iso8601_rx('time'));</td></tr>
<tr><td class="h"><a name="1627"></a>1627</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1628"></a>1628</td><td></td><td></td><td></td><td></td><td class="s">      if (! exists $opts{'noiso8601'}) {</td></tr>
<tr><td class="h"><a name="1629"></a>1629</td><td></td><td></td><td></td><td></td><td class="s">         if ($string =~ s/^\s*$timerx\s*$//) {</td></tr>
<tr><td class="h"><a name="1630"></a>1630</td><td></td><td></td><td></td><td></td><td class="s">            ($h,$fh,$mn,$fm,$s,$ampm,$tzstring,$zone,$abb,$off) =</td></tr>
<tr><td class="h"><a name="1631"></a>1631</td><td></td><td></td><td></td><td></td><td class="s">              @+{qw(h fh mn fm s ampm tzstring zone abb off)};</td></tr>
<tr><td class="h"><a name="1632"></a>1632</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1633"></a>1633</td><td></td><td></td><td></td><td></td><td class="s">            ($h,$mn,$s) = $self-&gt;_def_time($h,$mn,$s,$noupdate);</td></tr>
<tr><td class="h"><a name="1634"></a>1634</td><td></td><td></td><td></td><td></td><td class="s">            $h24      = 1  if ($h == 24  &amp;&amp;  $mn == 0  &amp;&amp;  $s == 0);</td></tr>
<tr><td class="h"><a name="1635"></a>1635</td><td></td><td></td><td></td><td></td><td class="s">            $string   =~ s/\s*$//;</td></tr>
<tr><td class="h"><a name="1636"></a>1636</td><td></td><td></td><td></td><td></td><td class="s">            $got_time = 1;</td></tr>
<tr><td class="h"><a name="1637"></a>1637</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1638"></a>1638</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1639"></a>1639</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1640"></a>1640</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1641"></a>1641</td><td></td><td></td><td></td><td></td><td class="s">   # Make time substitutions (i.e. noon =&gt; 12:00:00)</td></tr>
<tr><td class="h"><a name="1642"></a>1642</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1643"></a>1643</td><td class="c0">2436</td><td class="c0"><span title="Avg 400ns">973µs</span></td><td></td><td></td><td class="s">   if (! $got_time  &amp;&amp;</td></tr>
<tr><td class="h"><a name="1644"></a>1644</td><td></td><td></td><td></td><td></td><td class="s">       ! exists $opts{'noother'}) {</td></tr>
<tr><td class="h"><a name="1645"></a>1645</td><td class="c0">2436</td><td class="c0"><span title="Avg 543ns">1.32ms</span></td><td></td><td></td><td class="s">      my @rx = @{ $$dmb{'data'}{'rx'}{'times'} };</td></tr>
<tr><td class="h"><a name="1646"></a>1646</td><td class="c0">2436</td><td class="c1"><span title="Avg 210ns">512µs</span></td><td></td><td></td><td class="s">      shift(@rx);</td></tr>
<tr><td class="h"><a name="1647"></a>1647</td><td class="c0">2436</td><td class="c0"><span title="Avg 452ns">1.10ms</span></td><td></td><td></td><td class="s">      foreach my $rx (@rx) {</td></tr>
<tr><td class="h"><a name="1648"></a>1648</td><td class="c0">4872</td><td class="c0"><span title="Avg 5µs">23.3ms</span></td><td class="c0">9744</td><td class="c0">13.9ms</td><td class="s">         if ($string =~ $rx) {<div class="calls"><div class="calls_out">         # spent  12.1ms making 4872 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 2µs/call
         # spent  1.86ms making 4872 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 383ns/call</div></div></td></tr>
<tr><td class="h"><a name="1649"></a>1649</td><td></td><td></td><td></td><td></td><td class="s">            my $repl = $$dmb{'data'}{'wordmatch'}{'times'}{lc($1)};</td></tr>
<tr><td class="h"><a name="1650"></a>1650</td><td></td><td></td><td></td><td></td><td class="s">            $string =~ s/$rx/$repl/g;</td></tr>
<tr><td class="h"><a name="1651"></a>1651</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1652"></a>1652</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1653"></a>1653</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1654"></a>1654</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1655"></a>1655</td><td></td><td></td><td></td><td></td><td class="s">   # Check to see if there is a time in the string</td></tr>
<tr><td class="h"><a name="1656"></a>1656</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1657"></a>1657</td><td class="c0">2436</td><td class="c0"><span title="Avg 268ns">653µs</span></td><td></td><td></td><td class="s">   if (! $got_time) {</td></tr>
<tr><td class="h"><a name="1658"></a>1658</td><td class="c0">2436</td><td class="c0"><span title="Avg 739ns">1.80ms</span></td><td class="c3">1</td><td class="c3">2.56ms</td><td class="s">      $timerx = (exists $$dmb{'data'}{'rx'}{'other'}{'time'} ?<div class="calls"><div class="calls_out">      # spent  2.56ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1659"></a>1659</td><td></td><td></td><td></td><td></td><td class="s">                 $$dmb{'data'}{'rx'}{'other'}{'time'} :</td></tr>
<tr><td class="h"><a name="1660"></a>1660</td><td></td><td></td><td></td><td></td><td class="s">                 $self-&gt;_other_rx('time'));</td></tr>
<tr><td class="h"><a name="1661"></a>1661</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1662"></a>1662</td><td class="c0">2436</td><td class="c0"><span title="Avg 16µs">40.2ms</span></td><td class="c0">4872</td><td class="c0">35.5ms</td><td class="s">      if ($string =~ s/$timerx/ /) {<div class="calls"><div class="calls_out">      # spent  34.0ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 14µs/call
      # spent  1.49ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 611ns/call</div></div></td></tr>
<tr><td class="h"><a name="1663"></a>1663</td><td class="c0">2436</td><td class="c0"><span title="Avg 18µs">42.6ms</span></td><td class="c0">24360</td><td class="c1">7.86ms</td><td class="s">         ($h,$fh,$mn,$fm,$s,$ampm,$tzstring,$zone,$abb,$off) =<div class="calls"><div class="calls_out">         # spent  7.86ms making 24360 calls to <a href="dm5dm6_ex3-1-line.html#Tie__Hash__NamedCapture__FETCH">Tie::Hash::NamedCapture::FETCH</a>, avg 323ns/call</div></div></td></tr>
<tr><td class="h"><a name="1664"></a>1664</td><td></td><td></td><td></td><td></td><td class="s">           @+{qw(h fh mn fm s ampm tzstring zone abb off)};</td></tr>
<tr><td class="h"><a name="1665"></a>1665</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1666"></a>1666</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">3.09ms</span></td><td class="c0">2436</td><td class="c1">5.87ms</td><td class="s">         ($h,$mn,$s) = $self-&gt;_def_time($h,$mn,$s,$noupdate);<div class="calls"><div class="calls_out">         # spent  5.87ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#2331">Date::Manip::Date::_def_time</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="1667"></a>1667</td><td class="c0">2436</td><td class="c1"><span title="Avg 243ns">593µs</span></td><td></td><td></td><td class="s">         $h24      = 1  if ($h == 24  &amp;&amp;  $mn == 0  &amp;&amp;  $s == 0);</td></tr>
<tr><td class="h"><a name="1668"></a>1668</td><td class="c0">2436</td><td class="c0"><span title="Avg 3µs">6.43ms</span></td><td class="c0">2436</td><td class="c2">4.03ms</td><td class="s">         $string   =~ s/\s*$//;<div class="calls"><div class="calls_out">         # spent  4.03ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="1669"></a>1669</td><td class="c0">2436</td><td class="c1"><span title="Avg 211ns">515µs</span></td><td></td><td></td><td class="s">         $got_time = 1;</td></tr>
<tr><td class="h"><a name="1670"></a>1670</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1671"></a>1671</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1672"></a>1672</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1673"></a>1673</td><td></td><td></td><td></td><td></td><td class="s">   # If we called this from $date-&gt;parse()</td></tr>
<tr><td class="h"><a name="1674"></a>1674</td><td></td><td></td><td></td><td></td><td class="s">   #    returns the string and a list of time components</td></tr>
<tr><td class="h"><a name="1675"></a>1675</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1676"></a>1676</td><td class="c0">2436</td><td class="c1"><span title="Avg 195ns">476µs</span></td><td></td><td></td><td class="s">   if ($caller eq 'parse') {</td></tr>
<tr><td class="h"><a name="1677"></a>1677</td><td class="c0">2436</td><td class="c3"><span title="Avg 103ns">250µs</span></td><td></td><td></td><td class="s">      if ($got_time) {</td></tr>
<tr><td class="h"><a name="1678"></a>1678</td><td class="c0">2436</td><td class="c0"><span title="Avg 1µs">2.53ms</span></td><td class="c0">2436</td><td class="c0">11.2ms</td><td class="s">         ($h,$mn,$s) = $self-&gt;_time($h,$mn,$s,$fh,$fm,$h24,$ampm,$noupdate);<div class="calls"><div class="calls_out">         # spent  11.2ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#1289">Date::Manip::Date::_time</a>, avg 5µs/call</div></div></td></tr>
<tr><td class="h"><a name="1679"></a>1679</td><td class="c0">2436</td><td class="c0"><span title="Avg 2µs">4.92ms</span></td><td></td><td></td><td class="s">         return ($got_time,$string,$h,$mn,$s,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1680"></a>1680</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1681"></a>1681</td><td></td><td></td><td></td><td></td><td class="s">         return (0);</td></tr>
<tr><td class="h"><a name="1682"></a>1682</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1683"></a>1683</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1684"></a>1684</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1685"></a>1685</td><td></td><td></td><td></td><td></td><td class="s">   # If we called this from $date-&gt;parse_time()</td></tr>
<tr><td class="h"><a name="1686"></a>1686</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1687"></a>1687</td><td></td><td></td><td></td><td></td><td class="s">   if (! $got_time  ||  $string) {</td></tr>
<tr><td class="h"><a name="1688"></a>1688</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = &quot;[$caller] Invalid time string&quot;;</td></tr>
<tr><td class="h"><a name="1689"></a>1689</td><td></td><td></td><td></td><td></td><td class="s">      return ();</td></tr>
<tr><td class="h"><a name="1690"></a>1690</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1691"></a>1691</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1692"></a>1692</td><td></td><td></td><td></td><td></td><td class="s">   ($h,$mn,$s) = $self-&gt;_time($h,$mn,$s,$fh,$fm,$h24,$ampm,$noupdate);</td></tr>
<tr><td class="h"><a name="1693"></a>1693</td><td></td><td></td><td></td><td></td><td class="s">   return ($h,$mn,$s,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1694"></a>1694</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1695"></a>1695</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1696"></a>1696</td><td></td><td></td><td></td><td></td><td class="s"># Parse common dates</td></tr>
<tr><td class="h"><a name="1697"></a>1697</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 90.7ms (41.3+49.4) within Date::Manip::Date::_parse_date_common which was called 2442 times, avg 37µs/call:
# 2442 times (41.3ms+49.4ms) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#463">line 463</a>, avg 37µs/call</div></div>sub _parse_date_common {</td></tr>
<tr><td class="h"><a name="1698"></a>1698</td><td class="c0">2442</td><td class="c1"><span title="Avg 180ns">439µs</span></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1699"></a>1699</td><td class="c0">2442</td><td class="c2"><span title="Avg 159ns">388µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1700"></a>1700</td><td class="c0">2442</td><td class="c3"><span title="Avg 119ns">291µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1701"></a>1701</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1702"></a>1702</td><td></td><td></td><td></td><td></td><td class="s">   # Since we want whitespace to be used as a separator, turn all</td></tr>
<tr><td class="h"><a name="1703"></a>1703</td><td></td><td></td><td></td><td></td><td class="s">   # whitespace into single spaces. This is necessary since the</td></tr>
<tr><td class="h"><a name="1704"></a>1704</td><td></td><td></td><td></td><td></td><td class="s">   # regexps do backreferences to make sure that separators are</td></tr>
<tr><td class="h"><a name="1705"></a>1705</td><td></td><td></td><td></td><td></td><td class="s">   # not mixed.</td></tr>
<tr><td class="h"><a name="1706"></a>1706</td><td class="c0">2442</td><td class="c0"><span title="Avg 2µs">5.57ms</span></td><td class="c0">2442</td><td class="c3">3.23ms</td><td class="s">   $string =~ s/\s+/ /g;<div class="calls"><div class="calls_out">   # spent  3.23ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="1707"></a>1707</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1708"></a>1708</td><td class="c0">2442</td><td class="c0"><span title="Avg 580ns">1.42ms</span></td><td class="c3">1</td><td class="c3">33µs</td><td class="s">   my $daterx = (exists $$dmb{'data'}{'rx'}{'other'}{'common_1'} ?<div class="calls"><div class="calls_out">   # spent    33µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1709"></a>1709</td><td></td><td></td><td></td><td></td><td class="s">                 $$dmb{'data'}{'rx'}{'other'}{'common_1'} :</td></tr>
<tr><td class="h"><a name="1710"></a>1710</td><td></td><td></td><td></td><td></td><td class="s">                 $self-&gt;_other_rx('common_1'));</td></tr>
<tr><td class="h"><a name="1711"></a>1711</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1712"></a>1712</td><td class="c0">2442</td><td class="c0"><span title="Avg 4µs">9.99ms</span></td><td class="c0">4884</td><td class="c1">5.51ms</td><td class="s">   if ($string =~ $daterx) {<div class="calls"><div class="calls_out">   # spent  3.95ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 2µs/call
   # spent  1.56ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 638ns/call</div></div></td></tr>
<tr><td class="h"><a name="1713"></a>1713</td><td></td><td></td><td></td><td></td><td class="s">      my($y,$m,$d) = @+{qw(y m d)};</td></tr>
<tr><td class="h"><a name="1714"></a>1714</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1715"></a>1715</td><td></td><td></td><td></td><td></td><td class="s">      if ($dmb-&gt;_config('dateformat') ne 'US') {</td></tr>
<tr><td class="h"><a name="1716"></a>1716</td><td></td><td></td><td></td><td></td><td class="s">         ($m,$d) = ($d,$m);</td></tr>
<tr><td class="h"><a name="1717"></a>1717</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1718"></a>1718</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1719"></a>1719</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,$noupdate);</td></tr>
<tr><td class="h"><a name="1720"></a>1720</td><td></td><td></td><td></td><td></td><td class="s">      return($y,$m,$d);</td></tr>
<tr><td class="h"><a name="1721"></a>1721</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1722"></a>1722</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1723"></a>1723</td><td class="c0">2442</td><td class="c0"><span title="Avg 609ns">1.49ms</span></td><td class="c3">1</td><td class="c3">964µs</td><td class="s">   $daterx = (exists $$dmb{'data'}{'rx'}{'other'}{'common_2'} ?<div class="calls"><div class="calls_out">   # spent   964µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1724"></a>1724</td><td></td><td></td><td></td><td></td><td class="s">              $$dmb{'data'}{'rx'}{'other'}{'common_2'} :</td></tr>
<tr><td class="h"><a name="1725"></a>1725</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;_other_rx('common_2'));</td></tr>
<tr><td class="h"><a name="1726"></a>1726</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1727"></a>1727</td><td class="c0">2442</td><td class="c0"><span title="Avg 5µs">11.8ms</span></td><td class="c0">4884</td><td class="c1">7.49ms</td><td class="s">   if ($string =~ $daterx) {<div class="calls"><div class="calls_out">   # spent  4.12ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 2µs/call
   # spent  3.37ms making 2442 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="1728"></a>1728</td><td class="c0">2430</td><td class="c0"><span title="Avg 9µs">20.9ms</span></td><td class="c0">12150</td><td class="c3">3.54ms</td><td class="s">      my($y,$m,$d,$mmm,$month) = @+{qw(y m d mmm month)};<div class="calls"><div class="calls_out">      # spent  3.54ms making 12150 calls to <a href="dm5dm6_ex3-1-line.html#Tie__Hash__NamedCapture__FETCH">Tie::Hash::NamedCapture::FETCH</a>, avg 291ns/call</div></div></td></tr>
<tr><td class="h"><a name="1729"></a>1729</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1730"></a>1730</td><td class="c0">2430</td><td class="c0"><span title="Avg 686ns">1.67ms</span></td><td></td><td></td><td class="s">      if ($mmm) {</td></tr>
<tr><td class="h"><a name="1731"></a>1731</td><td></td><td></td><td></td><td></td><td class="s">         $m = $$dmb{'data'}{'wordmatch'}{'month_abb'}{lc($mmm)};</td></tr>
<tr><td class="h"><a name="1732"></a>1732</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($month) {</td></tr>
<tr><td class="h"><a name="1733"></a>1733</td><td></td><td></td><td></td><td></td><td class="s">         $m = $$dmb{'data'}{'wordmatch'}{'month_name'}{lc($month)};</td></tr>
<tr><td class="h"><a name="1734"></a>1734</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1735"></a>1735</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1736"></a>1736</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">3.21ms</span></td><td class="c0">2430</td><td class="c0">28.6ms</td><td class="s">      ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,$noupdate);<div class="calls"><div class="calls_out">      # spent  28.6ms making 2430 calls to <a href="Date-Manip-Date-pm-12-line.html#2179">Date::Manip::Date::_def_date</a>, avg 12µs/call</div></div></td></tr>
<tr><td class="h"><a name="1737"></a>1737</td><td class="c0">2430</td><td class="c0"><span title="Avg 2µs">4.10ms</span></td><td></td><td></td><td class="s">      return($y,$m,$d);</td></tr>
<tr><td class="h"><a name="1738"></a>1738</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1739"></a>1739</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1740"></a>1740</td><td class="c3">12</td><td class="c3"><span title="Avg 1µs">15µs</span></td><td></td><td></td><td class="s">   return ();</td></tr>
<tr><td class="h"><a name="1741"></a>1741</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1742"></a>1742</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1743"></a>1743</td><td></td><td></td><td></td><td></td><td class="s">sub _parse_tz {</td></tr>
<tr><td class="h"><a name="1744"></a>1744</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1745"></a>1745</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1746"></a>1746</td><td></td><td></td><td></td><td></td><td class="s">   my($tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1747"></a>1747</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1748"></a>1748</td><td></td><td></td><td></td><td></td><td class="s">   my $rx  = $dmt-&gt;_zrx('zrx');</td></tr>
<tr><td class="h"><a name="1749"></a>1749</td><td></td><td></td><td></td><td></td><td class="s">   if ($string =~ s/(?:^|\s)$rx(?:$|\s)/ /) {</td></tr>
<tr><td class="h"><a name="1750"></a>1750</td><td></td><td></td><td></td><td></td><td class="s">      ($tzstring,$zone,$abb,$off) = @+{qw(tzstring zone abb off)};</td></tr>
<tr><td class="h"><a name="1751"></a>1751</td><td></td><td></td><td></td><td></td><td class="s">      return($string,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1752"></a>1752</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1753"></a>1753</td><td></td><td></td><td></td><td></td><td class="s">   return($string);</td></tr>
<tr><td class="h"><a name="1754"></a>1754</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1755"></a>1755</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1756"></a>1756</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 33.8ms (23.4+10.4) within Date::Manip::Date::_parse_dow which was called 2436 times, avg 14µs/call:
# 2436 times (23.4ms+10.4ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#184">line 184</a>, avg 14µs/call</div></div>sub _parse_dow {</td></tr>
<tr><td class="h"><a name="1757"></a>1757</td><td class="c0">2436</td><td class="c1"><span title="Avg 174ns">425µs</span></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1758"></a>1758</td><td class="c0">2436</td><td class="c2"><span title="Avg 142ns">346µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1759"></a>1759</td><td class="c0">2436</td><td class="c3"><span title="Avg 119ns">290µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1760"></a>1760</td><td class="c0">2436</td><td class="c3"><span title="Avg 82ns">199µs</span></td><td></td><td></td><td class="s">   my($y,$m,$d,$dow);</td></tr>
<tr><td class="h"><a name="1761"></a>1761</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1762"></a>1762</td><td></td><td></td><td></td><td></td><td class="s">   # Remove the day of week</td></tr>
<tr><td class="h"><a name="1763"></a>1763</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1764"></a>1764</td><td class="c0">2436</td><td class="c0"><span title="Avg 638ns">1.55ms</span></td><td class="c3">1</td><td class="c3">66µs</td><td class="s">   my $rx = (exists $$dmb{'data'}{'rx'}{'other'}{'dow'} ?<div class="calls"><div class="calls_out">   # spent    66µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1765"></a>1765</td><td></td><td></td><td></td><td></td><td class="s">             $$dmb{'data'}{'rx'}{'other'}{'dow'} :</td></tr>
<tr><td class="h"><a name="1766"></a>1766</td><td></td><td></td><td></td><td></td><td class="s">             $self-&gt;_other_rx('dow'));</td></tr>
<tr><td class="h"><a name="1767"></a>1767</td><td class="c0">2436</td><td class="c0"><span title="Avg 4µs">9.79ms</span></td><td class="c0">4872</td><td class="c2">4.98ms</td><td class="s">   if ($string =~ s/$rx/ /) {<div class="calls"><div class="calls_out">   # spent  3.61ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 1µs/call
   # spent  1.36ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 560ns/call</div></div></td></tr>
<tr><td class="h"><a name="1768"></a>1768</td><td class="c0">2401</td><td class="c0"><span title="Avg 2µs">5.65ms</span></td><td class="c0">2401</td><td class="c3">991µs</td><td class="s">      $dow = $+{'dow'};<div class="calls"><div class="calls_out">      # spent   991µs making 2401 calls to <a href="dm5dm6_ex3-1-line.html#Tie__Hash__NamedCapture__FETCH">Tie::Hash::NamedCapture::FETCH</a>, avg 413ns/call</div></div></td></tr>
<tr><td class="h"><a name="1769"></a>1769</td><td class="c0">2401</td><td class="c0"><span title="Avg 309ns">741µs</span></td><td></td><td></td><td class="s">      $dow = lc($dow);</td></tr>
<tr><td class="h"><a name="1770"></a>1770</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1771"></a>1771</td><td class="c0">2401</td><td class="c0"><span title="Avg 895ns">2.15ms</span></td><td></td><td></td><td class="s">      $dow = $$dmb{'data'}{'wordmatch'}{'day_abb'}{$dow}</td></tr>
<tr><td class="h"><a name="1772"></a>1772</td><td></td><td></td><td></td><td></td><td class="s">        if (exists $$dmb{'data'}{'wordmatch'}{'day_abb'}{$dow});</td></tr>
<tr><td class="h"><a name="1773"></a>1773</td><td class="c0">2401</td><td class="c0"><span title="Avg 565ns">1.36ms</span></td><td></td><td></td><td class="s">      $dow = $$dmb{'data'}{'wordmatch'}{'day_name'}{$dow}</td></tr>
<tr><td class="h"><a name="1774"></a>1774</td><td></td><td></td><td></td><td></td><td class="s">        if (exists $$dmb{'data'}{'wordmatch'}{'day_name'}{$dow});</td></tr>
<tr><td class="h"><a name="1775"></a>1775</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="1776"></a>1776</td><td class="c0">35</td><td class="c3"><span title="Avg 1µs">48µs</span></td><td></td><td></td><td class="s">      return (0);</td></tr>
<tr><td class="h"><a name="1777"></a>1777</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1778"></a>1778</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1779"></a>1779</td><td class="c0">2401</td><td class="c0"><span title="Avg 2µs">5.32ms</span></td><td class="c0">2401</td><td class="c3">3.01ms</td><td class="s">   $string =~ s/\s*$//;<div class="calls"><div class="calls_out">   # spent  3.01ms making 2401 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="1780"></a>1780</td><td class="c0">2401</td><td class="c0"><span title="Avg 2µs">3.65ms</span></td><td class="c0">2401</td><td class="c3">1.37ms</td><td class="s">   $string =~ s/^\s*//;<div class="calls"><div class="calls_out">   # spent  1.37ms making 2401 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_subst">Date::Manip::Date::CORE:subst</a>, avg 570ns/call</div></div></td></tr>
<tr><td class="h"><a name="1781"></a>1781</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1782"></a>1782</td><td class="c0">2401</td><td class="c0"><span title="Avg 1µs">3.50ms</span></td><td></td><td></td><td class="s">   return (0,$string,$dow)  if ($string);</td></tr>
<tr><td class="h"><a name="1783"></a>1783</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1784"></a>1784</td><td></td><td></td><td></td><td></td><td class="s">   # Handle the simple DoW format</td></tr>
<tr><td class="h"><a name="1785"></a>1785</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1786"></a>1786</td><td></td><td></td><td></td><td></td><td class="s">   ($y,$m,$d)  = $self-&gt;_def_date($y,$m,$d,$noupdate);</td></tr>
<tr><td class="h"><a name="1787"></a>1787</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1788"></a>1788</td><td></td><td></td><td></td><td></td><td class="s">   my($w,$dow1);</td></tr>
<tr><td class="h"><a name="1789"></a>1789</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1790"></a>1790</td><td></td><td></td><td></td><td></td><td class="s">   ($y,$w)       = $dmb-&gt;week_of_year([$y,$m,$d]);  # week of year</td></tr>
<tr><td class="h"><a name="1791"></a>1791</td><td></td><td></td><td></td><td></td><td class="s">   ($y,$m,$d)    = @{ $dmb-&gt;week_of_year($y,$w) };  # first day</td></tr>
<tr><td class="h"><a name="1792"></a>1792</td><td></td><td></td><td></td><td></td><td class="s">   $dow1         = $dmb-&gt;day_of_week([$y,$m,$d]);   # DoW of first day</td></tr>
<tr><td class="h"><a name="1793"></a>1793</td><td></td><td></td><td></td><td></td><td class="s">   $dow1 -= 7    if ($dow1 &gt; $dow);</td></tr>
<tr><td class="h"><a name="1794"></a>1794</td><td></td><td></td><td></td><td></td><td class="s">   ($y,$m,$d)    = @{ $dmb-&gt;calc_date_days([$y,$m,$d],$dow-$dow1) };</td></tr>
<tr><td class="h"><a name="1795"></a>1795</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1796"></a>1796</td><td></td><td></td><td></td><td></td><td class="s">   return(1,$y,$m,$d);</td></tr>
<tr><td class="h"><a name="1797"></a>1797</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1798"></a>1798</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1799"></a>1799</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 13µs within Date::Manip::Date::_parse_holidays which was called 6 times, avg 2µs/call:
# 6 times (13µs+0s) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#270">line 270</a>, avg 2µs/call</div></div>sub _parse_holidays {</td></tr>
<tr><td class="h"><a name="1800"></a>1800</td><td class="c3">6</td><td class="c3"><span title="Avg 267ns">2µs</span></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1801"></a>1801</td><td class="c3">6</td><td class="c3"><span title="Avg 433ns">3µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1802"></a>1802</td><td class="c3">6</td><td class="c3"><span title="Avg 267ns">2µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1803"></a>1803</td><td class="c3">6</td><td class="c3"><span title="Avg 117ns">700ns</span></td><td></td><td></td><td class="s">   my($y,$m,$d);</td></tr>
<tr><td class="h"><a name="1804"></a>1804</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1805"></a>1805</td><td class="c3">6</td><td class="c3"><span title="Avg 2µs">10µs</span></td><td></td><td></td><td class="s">   if (! exists $$dmb{'data'}{'rx'}{'holidays'}) {</td></tr>
<tr><td class="h"><a name="1806"></a>1806</td><td></td><td></td><td></td><td></td><td class="s">      return (0);</td></tr>
<tr><td class="h"><a name="1807"></a>1807</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1808"></a>1808</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1809"></a>1809</td><td></td><td></td><td></td><td></td><td class="s">   $string =~ s/\s*$//;</td></tr>
<tr><td class="h"><a name="1810"></a>1810</td><td></td><td></td><td></td><td></td><td class="s">   $string =~ s/^\s*//;</td></tr>
<tr><td class="h"><a name="1811"></a>1811</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1812"></a>1812</td><td></td><td></td><td></td><td></td><td class="s">   my $rx = $$dmb{'data'}{'rx'}{'holidays'};</td></tr>
<tr><td class="h"><a name="1813"></a>1813</td><td></td><td></td><td></td><td></td><td class="s">   if ($string =~ $rx) {</td></tr>
<tr><td class="h"><a name="1814"></a>1814</td><td></td><td></td><td></td><td></td><td class="s">      my $hol;</td></tr>
<tr><td class="h"><a name="1815"></a>1815</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$hol) = @+{qw(y holiday)};</td></tr>
<tr><td class="h"><a name="1816"></a>1816</td><td></td><td></td><td></td><td></td><td class="s">      $y = $dmt-&gt;_now('y',$noupdate)  if (! $y);</td></tr>
<tr><td class="h"><a name="1817"></a>1817</td><td></td><td></td><td></td><td></td><td class="s">      $y += 0;</td></tr>
<tr><td class="h"><a name="1818"></a>1818</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1819"></a>1819</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;_holidays($y,2);</td></tr>
<tr><td class="h"><a name="1820"></a>1820</td><td></td><td></td><td></td><td></td><td class="s">      return (0)  if (! exists $$dmb{'data'}{'holidays'}{'dates'}{$y});</td></tr>
<tr><td class="h"><a name="1821"></a>1821</td><td></td><td></td><td></td><td></td><td class="s">      foreach my $m (keys %{ $$dmb{'data'}{'holidays'}{'dates'}{$y} }) {</td></tr>
<tr><td class="h"><a name="1822"></a>1822</td><td></td><td></td><td></td><td></td><td class="s">         foreach my $d (keys %{ $$dmb{'data'}{'holidays'}{'dates'}{$y}{$m} }) {</td></tr>
<tr><td class="h"><a name="1823"></a>1823</td><td></td><td></td><td></td><td></td><td class="s">            foreach my $nam (@{ $$dmb{'data'}{'holidays'}{'dates'}{$y}{$m}{$d} }) {</td></tr>
<tr><td class="h"><a name="1824"></a>1824</td><td></td><td></td><td></td><td></td><td class="s">               if (lc($nam) eq lc($hol)) {</td></tr>
<tr><td class="h"><a name="1825"></a>1825</td><td></td><td></td><td></td><td></td><td class="s">                  return(1,$y,$m,$d);</td></tr>
<tr><td class="h"><a name="1826"></a>1826</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="1827"></a>1827</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="1828"></a>1828</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1829"></a>1829</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1830"></a>1830</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1831"></a>1831</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1832"></a>1832</td><td></td><td></td><td></td><td></td><td class="s">   return (0);</td></tr>
<tr><td class="h"><a name="1833"></a>1833</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1834"></a>1834</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1835"></a>1835</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 5.58ms (81µs+5.50) within Date::Manip::Date::_parse_delta which was called 6 times, avg 929µs/call:
# 6 times (81µs+5.50ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#257">line 257</a>, avg 929µs/call</div></div>sub _parse_delta {</td></tr>
<tr><td class="h"><a name="1836"></a>1836</td><td class="c3">6</td><td class="c3"><span title="Avg 567ns">3µs</span></td><td></td><td></td><td class="s">   my($self,$string,$dow,$got_time,$h,$mn,$s,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1837"></a>1837</td><td class="c3">6</td><td class="c3"><span title="Avg 267ns">2µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1838"></a>1838</td><td class="c3">6</td><td class="c3"><span title="Avg 217ns">1µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1839"></a>1839</td><td class="c3">6</td><td class="c3"><span title="Avg 100ns">600ns</span></td><td></td><td></td><td class="s">   my($y,$m,$d);</td></tr>
<tr><td class="h"><a name="1840"></a>1840</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1841"></a>1841</td><td class="c3">6</td><td class="c3"><span title="Avg 2µs">10µs</span></td><td class="c3">6</td><td class="c3">2.93ms</td><td class="s">   my $delta = $self-&gt;new_delta();<div class="calls"><div class="calls_out">   # spent  2.93ms making 6 calls to <a href="Date-Manip-Obj-pm-13-line.html#201">Date::Manip::Obj::new_delta</a>, avg 488µs/call</div></div></td></tr>
<tr><td class="h"><a name="1842"></a>1842</td><td class="c3">6</td><td class="c3"><span title="Avg 883ns">5µs</span></td><td class="c3">6</td><td class="c3">2.25ms</td><td class="s">   my $err   = $delta-&gt;parse($string);<div class="calls"><div class="calls_out">   # spent  2.25ms making 6 calls to <a href="Date-Manip-Delta-pm-490-line.html#249">Date::Manip::Delta::parse</a>, avg 375µs/call</div></div></td></tr>
<tr><td class="h"><a name="1843"></a>1843</td><td class="c3">6</td><td class="c3"><span title="Avg 2µs">12µs</span></td><td class="c3">6</td><td class="c3">274µs</td><td class="s">   my $tz    = $dmt-&gt;_now('tz');<div class="calls"><div class="calls_out">   # spent   274µs making 6 calls to <a href="Date-Manip-TZ_Base-pm-30-line.html#271">Date::Manip::TZ_Base::_now</a>, avg 46µs/call</div></div></td></tr>
<tr><td class="h"><a name="1844"></a>1844</td><td class="c3">6</td><td class="c3"><span title="Avg 600ns">4µs</span></td><td class="c3">6</td><td class="c3">43µs</td><td class="s">   my $isdst = $dmt-&gt;_now('isdst');<div class="calls"><div class="calls_out">   # spent    43µs making 6 calls to <a href="Date-Manip-TZ_Base-pm-30-line.html#271">Date::Manip::TZ_Base::_now</a>, avg 7µs/call</div></div></td></tr>
<tr><td class="h"><a name="1845"></a>1845</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1846"></a>1846</td><td class="c3">6</td><td class="c3"><span title="Avg 150ns">900ns</span></td><td></td><td></td><td class="s">   if (! $err) {</td></tr>
<tr><td class="h"><a name="1847"></a>1847</td><td></td><td></td><td></td><td></td><td class="s">      my($dy,$dm,$dw,$dd,$dh,$dmn,$ds) = @{ $$delta{'data'}{'delta'} };</td></tr>
<tr><td class="h"><a name="1848"></a>1848</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1849"></a>1849</td><td></td><td></td><td></td><td></td><td class="s">      if ($got_time  &amp;&amp;</td></tr>
<tr><td class="h"><a name="1850"></a>1850</td><td></td><td></td><td></td><td></td><td class="s">          ($dh != 0  ||  $dmn != 0  ||  $ds != 0)) {</td></tr>
<tr><td class="h"><a name="1851"></a>1851</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = '[parse] Two times entered or implied';</td></tr>
<tr><td class="h"><a name="1852"></a>1852</td><td></td><td></td><td></td><td></td><td class="s">         return (1);</td></tr>
<tr><td class="h"><a name="1853"></a>1853</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1854"></a>1854</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1855"></a>1855</td><td></td><td></td><td></td><td></td><td class="s">      if ($got_time) {</td></tr>
<tr><td class="h"><a name="1856"></a>1856</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $self-&gt;_def_date($y,$m,$d,$noupdate);</td></tr>
<tr><td class="h"><a name="1857"></a>1857</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="1858"></a>1858</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="1859"></a>1859</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="1860"></a>1860</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1861"></a>1861</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1862"></a>1862</td><td></td><td></td><td></td><td></td><td class="s">      my $business = $$delta{'data'}{'business'};</td></tr>
<tr><td class="h"><a name="1863"></a>1863</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1864"></a>1864</td><td></td><td></td><td></td><td></td><td class="s">      my($date2,$offset,$abbrev);</td></tr>
<tr><td class="h"><a name="1865"></a>1865</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="1866"></a>1866</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta([$y,$m,$d,$h,$mn,$s],</td></tr>
<tr><td class="h"><a name="1867"></a>1867</td><td></td><td></td><td></td><td></td><td class="s">                                    [$dy,$dm,$dw,$dd,$dh,$dmn,$ds],</td></tr>
<tr><td class="h"><a name="1868"></a>1868</td><td></td><td></td><td></td><td></td><td class="s">                                    0,$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="1869"></a>1869</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s) = @$date2;</td></tr>
<tr><td class="h"><a name="1870"></a>1870</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1871"></a>1871</td><td></td><td></td><td></td><td></td><td class="s">      if ($dow) {</td></tr>
<tr><td class="h"><a name="1872"></a>1872</td><td></td><td></td><td></td><td></td><td class="s">         if ($dd != 0  ||  $dh != 0  || $dmn != 0  ||  $ds != 0) {</td></tr>
<tr><td class="h"><a name="1873"></a>1873</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = '[parse] Day of week not allowed';</td></tr>
<tr><td class="h"><a name="1874"></a>1874</td><td></td><td></td><td></td><td></td><td class="s">            return (1);</td></tr>
<tr><td class="h"><a name="1875"></a>1875</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1876"></a>1876</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1877"></a>1877</td><td></td><td></td><td></td><td></td><td class="s">         my($w,$dow1);</td></tr>
<tr><td class="h"><a name="1878"></a>1878</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1879"></a>1879</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$w)       = $dmb-&gt;week_of_year([$y,$m,$d]); # week of year</td></tr>
<tr><td class="h"><a name="1880"></a>1880</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)    = @{ $dmb-&gt;week_of_year($y,$w) }; # first day</td></tr>
<tr><td class="h"><a name="1881"></a>1881</td><td></td><td></td><td></td><td></td><td class="s">         $dow1         = $dmb-&gt;day_of_week([$y,$m,$d]); # DoW of first day</td></tr>
<tr><td class="h"><a name="1882"></a>1882</td><td></td><td></td><td></td><td></td><td class="s">         $dow1 -= 7    if ($dow1 &gt; $dow);</td></tr>
<tr><td class="h"><a name="1883"></a>1883</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)    = @{ $dmb-&gt;calc_date_days([$y,$m,$d],$dow-$dow1) };</td></tr>
<tr><td class="h"><a name="1884"></a>1884</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1885"></a>1885</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1886"></a>1886</td><td></td><td></td><td></td><td></td><td class="s">      return (1,$y,$m,$d,$h,$mn,$s);</td></tr>
<tr><td class="h"><a name="1887"></a>1887</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1888"></a>1888</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1889"></a>1889</td><td class="c3">6</td><td class="c3"><span title="Avg 5µs">31µs</span></td><td></td><td></td><td class="s">   return (0);</td></tr>
<tr><td class="h"><a name="1890"></a>1890</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1891"></a>1891</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1892"></a>1892</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 19.1ms (9.50+9.59) within Date::Manip::Date::_parse_datetime_other which was called 2436 times, avg 8µs/call:
# 2436 times (9.50ms+9.59ms) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#160">line 160</a>, avg 8µs/call</div></div>sub _parse_datetime_other {</td></tr>
<tr><td class="h"><a name="1893"></a>1893</td><td class="c0">2436</td><td class="c1"><span title="Avg 197ns">479µs</span></td><td></td><td></td><td class="s">   my($self,$string,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1894"></a>1894</td><td class="c0">2436</td><td class="c2"><span title="Avg 164ns">399µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1895"></a>1895</td><td class="c0">2436</td><td class="c2"><span title="Avg 139ns">338µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1896"></a>1896</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1897"></a>1897</td><td class="c0">2436</td><td class="c0"><span title="Avg 725ns">1.77ms</span></td><td class="c3">1</td><td class="c2">4.93ms</td><td class="s">   my $rx = (exists $$dmb{'data'}{'rx'}{'other'}{'miscdatetime'} ?<div class="calls"><div class="calls_out">   # spent  4.93ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1898"></a>1898</td><td></td><td></td><td></td><td></td><td class="s">                 $$dmb{'data'}{'rx'}{'other'}{'miscdatetime'} :</td></tr>
<tr><td class="h"><a name="1899"></a>1899</td><td></td><td></td><td></td><td></td><td class="s">                 $self-&gt;_other_rx('miscdatetime'));</td></tr>
<tr><td class="h"><a name="1900"></a>1900</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1901"></a>1901</td><td class="c0">2436</td><td class="c0"><span title="Avg 4µs">9.49ms</span></td><td class="c0">4872</td><td class="c2">4.66ms</td><td class="s">   if ($string =~ $rx) {<div class="calls"><div class="calls_out">   # spent  2.91ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 1µs/call
   # spent  1.76ms making 2436 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 721ns/call</div></div></td></tr>
<tr><td class="h"><a name="1902"></a>1902</td><td></td><td></td><td></td><td></td><td class="s">      my ($special,$epoch,$y,$mmm,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off) =</td></tr>
<tr><td class="h"><a name="1903"></a>1903</td><td></td><td></td><td></td><td></td><td class="s">        @+{qw(special epoch y mmm d h mn s tzstring zone abb off)};</td></tr>
<tr><td class="h"><a name="1904"></a>1904</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1905"></a>1905</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($special)) {</td></tr>
<tr><td class="h"><a name="1906"></a>1906</td><td></td><td></td><td></td><td></td><td class="s">         my $delta  = $$dmb{'data'}{'wordmatch'}{'offset_time'}{lc($special)};</td></tr>
<tr><td class="h"><a name="1907"></a>1907</td><td></td><td></td><td></td><td></td><td class="s">         my @delta  = @{ $dmb-&gt;split('delta',$delta) };</td></tr>
<tr><td class="h"><a name="1908"></a>1908</td><td></td><td></td><td></td><td></td><td class="s">         my @date   = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="1909"></a>1909</td><td></td><td></td><td></td><td></td><td class="s">         my $tz     = $dmt-&gt;_now('tz');</td></tr>
<tr><td class="h"><a name="1910"></a>1910</td><td></td><td></td><td></td><td></td><td class="s">         my $isdst  = $dmt-&gt;_now('isdst');</td></tr>
<tr><td class="h"><a name="1911"></a>1911</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="1912"></a>1912</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1913"></a>1913</td><td></td><td></td><td></td><td></td><td class="s">         my($err,$date2,$offset,$abbrev);</td></tr>
<tr><td class="h"><a name="1914"></a>1914</td><td></td><td></td><td></td><td></td><td class="s">         ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="1915"></a>1915</td><td></td><td></td><td></td><td></td><td class="s">           $self-&gt;__calc_date_delta([@date],[@delta],0,0,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="1916"></a>1916</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1917"></a>1917</td><td></td><td></td><td></td><td></td><td class="s">         if ($tzstring) {</td></tr>
<tr><td class="h"><a name="1918"></a>1918</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1919"></a>1919</td><td></td><td></td><td></td><td></td><td class="s">            $date2     = []  if (! defined $date2);</td></tr>
<tr><td class="h"><a name="1920"></a>1920</td><td></td><td></td><td></td><td></td><td class="s">            my $offset = (defined $off ? $dmb-&gt;_delta_convert('offset',$off) : '');</td></tr>
<tr><td class="h"><a name="1921"></a>1921</td><td></td><td></td><td></td><td></td><td class="s">            $zone      = (defined $zone ? lc($zone) : '');</td></tr>
<tr><td class="h"><a name="1922"></a>1922</td><td></td><td></td><td></td><td></td><td class="s">            my $abbrev = (defined $abb  ? lc($abb)  : '');</td></tr>
<tr><td class="h"><a name="1923"></a>1923</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1924"></a>1924</td><td></td><td></td><td></td><td></td><td class="s">            # In some cases, a valid abbreviation is also a valid timezone</td></tr>
<tr><td class="h"><a name="1925"></a>1925</td><td></td><td></td><td></td><td></td><td class="s">            my $tmp    = $dmt-&gt;__zone($date2,$offset,$zone,$abbrev,'');</td></tr>
<tr><td class="h"><a name="1926"></a>1926</td><td></td><td></td><td></td><td></td><td class="s">            if (! $tmp  &amp;&amp;  $abbrev  &amp;&amp;  ! $zone) {</td></tr>
<tr><td class="h"><a name="1927"></a>1927</td><td></td><td></td><td></td><td></td><td class="s">               $abbrev = $dmt-&gt;_zone($abbrev);</td></tr>
<tr><td class="h"><a name="1928"></a>1928</td><td></td><td></td><td></td><td></td><td class="s">               $tmp    = $dmt-&gt;__zone($date2,$offset,$abbrev,'','')  if ($abbrev);</td></tr>
<tr><td class="h"><a name="1929"></a>1929</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="1930"></a>1930</td><td></td><td></td><td></td><td></td><td class="s">            $zone      = $tmp;</td></tr>
<tr><td class="h"><a name="1931"></a>1931</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1932"></a>1932</td><td></td><td></td><td></td><td></td><td class="s">            return (0)  if (! $zone);</td></tr>
<tr><td class="h"><a name="1933"></a>1933</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1934"></a>1934</td><td></td><td></td><td></td><td></td><td class="s">            my(@tmp) = $dmt-&gt;_convert('_parse_datetime_other',$date2,$tz,$zone);</td></tr>
<tr><td class="h"><a name="1935"></a>1935</td><td></td><td></td><td></td><td></td><td class="s">            $date2   = $tmp[1];</td></tr>
<tr><td class="h"><a name="1936"></a>1936</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1937"></a>1937</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1938"></a>1938</td><td></td><td></td><td></td><td></td><td class="s">         @date = @$date2;</td></tr>
<tr><td class="h"><a name="1939"></a>1939</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1940"></a>1940</td><td></td><td></td><td></td><td></td><td class="s">         return (1,@date,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1941"></a>1941</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1942"></a>1942</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (defined($epoch)) {</td></tr>
<tr><td class="h"><a name="1943"></a>1943</td><td></td><td></td><td></td><td></td><td class="s">         my $date   = [1970,1,1,0,0,0];</td></tr>
<tr><td class="h"><a name="1944"></a>1944</td><td></td><td></td><td></td><td></td><td class="s">         my @delta  = (0,0,$epoch);</td></tr>
<tr><td class="h"><a name="1945"></a>1945</td><td></td><td></td><td></td><td></td><td class="s">         $date      = $dmb-&gt;calc_date_time($date,\@delta);</td></tr>
<tr><td class="h"><a name="1946"></a>1946</td><td></td><td></td><td></td><td></td><td class="s">         my($err);</td></tr>
<tr><td class="h"><a name="1947"></a>1947</td><td></td><td></td><td></td><td></td><td class="s">         if ($tzstring) {</td></tr>
<tr><td class="h"><a name="1948"></a>1948</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1949"></a>1949</td><td></td><td></td><td></td><td></td><td class="s">            my $offset = (defined $off ? $dmb-&gt;_delta_convert('offset',$off) : '');</td></tr>
<tr><td class="h"><a name="1950"></a>1950</td><td></td><td></td><td></td><td></td><td class="s">            $zone      = (defined $zone ? lc($zone) : '');</td></tr>
<tr><td class="h"><a name="1951"></a>1951</td><td></td><td></td><td></td><td></td><td class="s">            my $abbrev = (defined $abb  ? lc($abb)  : '');</td></tr>
<tr><td class="h"><a name="1952"></a>1952</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1953"></a>1953</td><td></td><td></td><td></td><td></td><td class="s">            # In some cases, a valid abbreviation is also a valid timezone</td></tr>
<tr><td class="h"><a name="1954"></a>1954</td><td></td><td></td><td></td><td></td><td class="s">            my $tmp    = $dmt-&gt;__zone($date,$offset,$zone,$abbrev,'');</td></tr>
<tr><td class="h"><a name="1955"></a>1955</td><td></td><td></td><td></td><td></td><td class="s">            if (! $tmp  &amp;&amp;  $abbrev  &amp;&amp;  ! $zone) {</td></tr>
<tr><td class="h"><a name="1956"></a>1956</td><td></td><td></td><td></td><td></td><td class="s">               $abbrev = $dmt-&gt;_zone($abbrev);</td></tr>
<tr><td class="h"><a name="1957"></a>1957</td><td></td><td></td><td></td><td></td><td class="s">               $tmp    = $dmt-&gt;__zone($date,$offset,$abbrev,'','')  if ($abbrev);</td></tr>
<tr><td class="h"><a name="1958"></a>1958</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="1959"></a>1959</td><td></td><td></td><td></td><td></td><td class="s">            $zone      = $tmp;</td></tr>
<tr><td class="h"><a name="1960"></a>1960</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1961"></a>1961</td><td></td><td></td><td></td><td></td><td class="s">            return (0)  if (! $zone);</td></tr>
<tr><td class="h"><a name="1962"></a>1962</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1963"></a>1963</td><td></td><td></td><td></td><td></td><td class="s">            ($err,$date) = $dmt-&gt;convert_from_gmt($date,$zone);</td></tr>
<tr><td class="h"><a name="1964"></a>1964</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="1965"></a>1965</td><td></td><td></td><td></td><td></td><td class="s">            ($err,$date) = $dmt-&gt;convert_from_gmt($date);</td></tr>
<tr><td class="h"><a name="1966"></a>1966</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="1967"></a>1967</td><td></td><td></td><td></td><td></td><td class="s">         return (1,@$date,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1968"></a>1968</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1969"></a>1969</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (defined($y)) {</td></tr>
<tr><td class="h"><a name="1970"></a>1970</td><td></td><td></td><td></td><td></td><td class="s">         my $m = $$dmb{'data'}{'wordmatch'}{'month_abb'}{lc($mmm)};</td></tr>
<tr><td class="h"><a name="1971"></a>1971</td><td></td><td></td><td></td><td></td><td class="s">         return (1,$y,$m,$d,$h,$mn,$s,$tzstring,$zone,$abb,$off);</td></tr>
<tr><td class="h"><a name="1972"></a>1972</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="1973"></a>1973</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="1974"></a>1974</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1975"></a>1975</td><td class="c0">2436</td><td class="c0"><span title="Avg 2µs">4.32ms</span></td><td></td><td></td><td class="s">   return (0);</td></tr>
<tr><td class="h"><a name="1976"></a>1976</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="1977"></a>1977</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1978"></a>1978</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 2.34ms (56µs+2.28) within Date::Manip::Date::_parse_date_other which was called 12 times, avg 195µs/call:
# 12 times (56µs+2.28ms) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#473">line 473</a>, avg 195µs/call</div></div>sub _parse_date_other {</td></tr>
<tr><td class="h"><a name="1979"></a>1979</td><td class="c3">12</td><td class="c3"><span title="Avg 300ns">4µs</span></td><td></td><td></td><td class="s">   my($self,$string,$dow,$of,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="1980"></a>1980</td><td class="c3">12</td><td class="c3"><span title="Avg 208ns">2µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="1981"></a>1981</td><td class="c3">12</td><td class="c3"><span title="Avg 192ns">2µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="1982"></a>1982</td><td class="c3">12</td><td class="c3"><span title="Avg 108ns">1µs</span></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s);</td></tr>
<tr><td class="h"><a name="1983"></a>1983</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1984"></a>1984</td><td class="c3">12</td><td class="c3"><span title="Avg 817ns">10µs</span></td><td class="c3">1</td><td class="c3">2.21ms</td><td class="s">   my $rx = (exists $$dmb{'data'}{'rx'}{'other'}{'misc'} ?<div class="calls"><div class="calls_out">   # spent  2.21ms making 1 call to <a href="Date-Manip-Date-pm-12-line.html#1323">Date::Manip::Date::_other_rx</a></div></div></td></tr>
<tr><td class="h"><a name="1985"></a>1985</td><td></td><td></td><td></td><td></td><td class="s">                 $$dmb{'data'}{'rx'}{'other'}{'misc'} :</td></tr>
<tr><td class="h"><a name="1986"></a>1986</td><td></td><td></td><td></td><td></td><td class="s">                 $self-&gt;_other_rx('misc'));</td></tr>
<tr><td class="h"><a name="1987"></a>1987</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1988"></a>1988</td><td class="c3">12</td><td class="c3"><span title="Avg 150ns">2µs</span></td><td></td><td></td><td class="s">   my($mmm,$month,$nextprev,$last,$field_y,$field_m,$field_w,$field_d,$nth);</td></tr>
<tr><td class="h"><a name="1989"></a>1989</td><td></td><td></td><td></td><td></td><td class="s">   my($special,$got_m,$n,$got_y);</td></tr>
<tr><td class="h"><a name="1990"></a>1990</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1991"></a>1991</td><td class="c3">12</td><td class="c3"><span title="Avg 8µs">94µs</span></td><td class="c0">24</td><td class="c3">70µs</td><td class="s">   if ($string =~ $rx) {<div class="calls"><div class="calls_out">   # spent    41µs making 12 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_regcomp">Date::Manip::Date::CORE:regcomp</a>, avg 3µs/call
   # spent    29µs making 12 calls to <a href="Date-Manip-Date-pm-12-line.html#Date__Manip__Date__CORE_match">Date::Manip::Date::CORE:match</a>, avg 2µs/call</div></div></td></tr>
<tr><td class="h"><a name="1992"></a>1992</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$mmm,$month,$nextprev,$last,$field_y,$field_m,$field_w,$field_d,$nth,</td></tr>
<tr><td class="h"><a name="1993"></a>1993</td><td></td><td></td><td></td><td></td><td class="s">       $special,$n) =</td></tr>
<tr><td class="h"><a name="1994"></a>1994</td><td></td><td></td><td></td><td></td><td class="s">         @+{qw(y mmm month next last field_y field_m field_w field_d</td></tr>
<tr><td class="h"><a name="1995"></a>1995</td><td></td><td></td><td></td><td></td><td class="s">               nth special n)};</td></tr>
<tr><td class="h"><a name="1996"></a>1996</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="1997"></a>1997</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($y)) {</td></tr>
<tr><td class="h"><a name="1998"></a>1998</td><td></td><td></td><td></td><td></td><td class="s">         $y     = $dmt-&gt;_fix_year($y);</td></tr>
<tr><td class="h"><a name="1999"></a>1999</td><td></td><td></td><td></td><td></td><td class="s">         $got_y = 1;</td></tr>
<tr><td class="h"><a name="2000"></a>2000</td><td></td><td></td><td></td><td></td><td class="s">         return ()  if (! $y);</td></tr>
<tr><td class="h"><a name="2001"></a>2001</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2002"></a>2002</td><td></td><td></td><td></td><td></td><td class="s">         $y         = $dmt-&gt;_now('y',$$noupdate);</td></tr>
<tr><td class="h"><a name="2003"></a>2003</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2004"></a>2004</td><td></td><td></td><td></td><td></td><td class="s">         $got_y     = 0;</td></tr>
<tr><td class="h"><a name="2005"></a>2005</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'data'}{'def'}[0] = '';</td></tr>
<tr><td class="h"><a name="2006"></a>2006</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2007"></a>2007</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2008"></a>2008</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($mmm)) {</td></tr>
<tr><td class="h"><a name="2009"></a>2009</td><td></td><td></td><td></td><td></td><td class="s">         $m     = $$dmb{'data'}{'wordmatch'}{'month_abb'}{lc($mmm)};</td></tr>
<tr><td class="h"><a name="2010"></a>2010</td><td></td><td></td><td></td><td></td><td class="s">         $got_m = 1;</td></tr>
<tr><td class="h"><a name="2011"></a>2011</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($month) {</td></tr>
<tr><td class="h"><a name="2012"></a>2012</td><td></td><td></td><td></td><td></td><td class="s">         $m     = $$dmb{'data'}{'wordmatch'}{'month_name'}{lc($month)};</td></tr>
<tr><td class="h"><a name="2013"></a>2013</td><td></td><td></td><td></td><td></td><td class="s">         $got_m = 1;</td></tr>
<tr><td class="h"><a name="2014"></a>2014</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2015"></a>2015</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2016"></a>2016</td><td></td><td></td><td></td><td></td><td class="s">      if ($nth) {</td></tr>
<tr><td class="h"><a name="2017"></a>2017</td><td></td><td></td><td></td><td></td><td class="s">         $nth   = $$dmb{'data'}{'wordmatch'}{'nth'}{lc($nth)};</td></tr>
<tr><td class="h"><a name="2018"></a>2018</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2019"></a>2019</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2020"></a>2020</td><td></td><td></td><td></td><td></td><td class="s">      if ($got_m  &amp;&amp;  $nth  &amp;&amp;  ! $dow) {</td></tr>
<tr><td class="h"><a name="2021"></a>2021</td><td></td><td></td><td></td><td></td><td class="s">         # Dec 1st 1970</td></tr>
<tr><td class="h"><a name="2022"></a>2022</td><td></td><td></td><td></td><td></td><td class="s">         # 1st Dec 1970</td></tr>
<tr><td class="h"><a name="2023"></a>2023</td><td></td><td></td><td></td><td></td><td class="s">         # 1970 Dec 1st</td></tr>
<tr><td class="h"><a name="2024"></a>2024</td><td></td><td></td><td></td><td></td><td class="s">         # 1970 1st Dec</td></tr>
<tr><td class="h"><a name="2025"></a>2025</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2026"></a>2026</td><td></td><td></td><td></td><td></td><td class="s">         $d = $nth;</td></tr>
<tr><td class="h"><a name="2027"></a>2027</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2028"></a>2028</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($nextprev) {</td></tr>
<tr><td class="h"><a name="2029"></a>2029</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2030"></a>2030</td><td></td><td></td><td></td><td></td><td class="s">         my $next = 0;</td></tr>
<tr><td class="h"><a name="2031"></a>2031</td><td></td><td></td><td></td><td></td><td class="s">         my $sign = -1;</td></tr>
<tr><td class="h"><a name="2032"></a>2032</td><td></td><td></td><td></td><td></td><td class="s">         if ($$dmb{'data'}{'wordmatch'}{'nextprev'}{lc($nextprev)} == 1) {</td></tr>
<tr><td class="h"><a name="2033"></a>2033</td><td></td><td></td><td></td><td></td><td class="s">            $next  = 1;</td></tr>
<tr><td class="h"><a name="2034"></a>2034</td><td></td><td></td><td></td><td></td><td class="s">            $sign = 1;</td></tr>
<tr><td class="h"><a name="2035"></a>2035</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2036"></a>2036</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2037"></a>2037</td><td></td><td></td><td></td><td></td><td class="s">         if ($field_y || $field_m || $field_w) {</td></tr>
<tr><td class="h"><a name="2038"></a>2038</td><td></td><td></td><td></td><td></td><td class="s">            # next/prev year/month/week</td></tr>
<tr><td class="h"><a name="2039"></a>2039</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2040"></a>2040</td><td></td><td></td><td></td><td></td><td class="s">            my(@delta);</td></tr>
<tr><td class="h"><a name="2041"></a>2041</td><td></td><td></td><td></td><td></td><td class="s">            if ($field_y) {</td></tr>
<tr><td class="h"><a name="2042"></a>2042</td><td></td><td></td><td></td><td></td><td class="s">               @delta = ($sign*1,0,0,0,0,0,0);</td></tr>
<tr><td class="h"><a name="2043"></a>2043</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($field_m) {</td></tr>
<tr><td class="h"><a name="2044"></a>2044</td><td></td><td></td><td></td><td></td><td class="s">               @delta = (0,$sign*1,0,0,0,0,0);</td></tr>
<tr><td class="h"><a name="2045"></a>2045</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="2046"></a>2046</td><td></td><td></td><td></td><td></td><td class="s">               @delta = (0,0,$sign*1,0,0,0,0);</td></tr>
<tr><td class="h"><a name="2047"></a>2047</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2048"></a>2048</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2049"></a>2049</td><td></td><td></td><td></td><td></td><td class="s">            my @now   = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2050"></a>2050</td><td></td><td></td><td></td><td></td><td class="s">            my $tz    = $dmt-&gt;_now('tz');</td></tr>
<tr><td class="h"><a name="2051"></a>2051</td><td></td><td></td><td></td><td></td><td class="s">            my $isdst = $dmt-&gt;_now('isdst');</td></tr>
<tr><td class="h"><a name="2052"></a>2052</td><td></td><td></td><td></td><td></td><td class="s">            $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2053"></a>2053</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2054"></a>2054</td><td></td><td></td><td></td><td></td><td class="s">            my($err,$offset,$abbrev,$date2);</td></tr>
<tr><td class="h"><a name="2055"></a>2055</td><td></td><td></td><td></td><td></td><td class="s">            ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="2056"></a>2056</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;__calc_date_delta([@now],[@delta],0,0,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="2057"></a>2057</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) = @$date2;</td></tr>
<tr><td class="h"><a name="2058"></a>2058</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2059"></a>2059</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($dow) {</td></tr>
<tr><td class="h"><a name="2060"></a>2060</td><td></td><td></td><td></td><td></td><td class="s">            # next/prev friday</td></tr>
<tr><td class="h"><a name="2061"></a>2061</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2062"></a>2062</td><td></td><td></td><td></td><td></td><td class="s">            my @now = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2063"></a>2063</td><td></td><td></td><td></td><td></td><td class="s">            $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2064"></a>2064</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) = @{ $self-&gt;__next_prev(\@now,$next,$dow,0) };</td></tr>
<tr><td class="h"><a name="2065"></a>2065</td><td></td><td></td><td></td><td></td><td class="s">            $dow = 0;</td></tr>
<tr><td class="h"><a name="2066"></a>2066</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2067"></a>2067</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2068"></a>2068</td><td></td><td></td><td></td><td></td><td class="s">            return ();</td></tr>
<tr><td class="h"><a name="2069"></a>2069</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2070"></a>2070</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2071"></a>2071</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($last) {</td></tr>
<tr><td class="h"><a name="2072"></a>2072</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2073"></a>2073</td><td></td><td></td><td></td><td></td><td class="s">         if ($field_d  &amp;&amp;  $got_m) {</td></tr>
<tr><td class="h"><a name="2074"></a>2074</td><td></td><td></td><td></td><td></td><td class="s">            # last day in october 95</td></tr>
<tr><td class="h"><a name="2075"></a>2075</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2076"></a>2076</td><td></td><td></td><td></td><td></td><td class="s">            $d = $dmb-&gt;days_in_month($y,$m);</td></tr>
<tr><td class="h"><a name="2077"></a>2077</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2078"></a>2078</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($dow  &amp;&amp;  $got_m) {</td></tr>
<tr><td class="h"><a name="2079"></a>2079</td><td></td><td></td><td></td><td></td><td class="s">            # last friday in october 95</td></tr>
<tr><td class="h"><a name="2080"></a>2080</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2081"></a>2081</td><td></td><td></td><td></td><td></td><td class="s">            $d = $dmb-&gt;days_in_month($y,$m);</td></tr>
<tr><td class="h"><a name="2082"></a>2082</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="2083"></a>2083</td><td></td><td></td><td></td><td></td><td class="s">              @{ $self-&gt;__next_prev([$y,$m,$d,0,0,0],0,$dow,1) };</td></tr>
<tr><td class="h"><a name="2084"></a>2084</td><td></td><td></td><td></td><td></td><td class="s">            $dow = 0;</td></tr>
<tr><td class="h"><a name="2085"></a>2085</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2086"></a>2086</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($dow) {</td></tr>
<tr><td class="h"><a name="2087"></a>2087</td><td></td><td></td><td></td><td></td><td class="s">            # last friday in 95</td></tr>
<tr><td class="h"><a name="2088"></a>2088</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2089"></a>2089</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="2090"></a>2090</td><td></td><td></td><td></td><td></td><td class="s">              @{ $self-&gt;__next_prev([$y,12,31,0,0,0],0,$dow,0) };</td></tr>
<tr><td class="h"><a name="2091"></a>2091</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2092"></a>2092</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2093"></a>2093</td><td></td><td></td><td></td><td></td><td class="s">            return ();</td></tr>
<tr><td class="h"><a name="2094"></a>2094</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2095"></a>2095</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2096"></a>2096</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($nth  &amp;&amp;  $dow  &amp;&amp;  ! $field_w) {</td></tr>
<tr><td class="h"><a name="2097"></a>2097</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2098"></a>2098</td><td></td><td></td><td></td><td></td><td class="s">         if ($got_m) {</td></tr>
<tr><td class="h"><a name="2099"></a>2099</td><td></td><td></td><td></td><td></td><td class="s">            if ($of) {</td></tr>
<tr><td class="h"><a name="2100"></a>2100</td><td></td><td></td><td></td><td></td><td class="s">               # nth DoW of MMM [YYYY]</td></tr>
<tr><td class="h"><a name="2101"></a>2101</td><td></td><td></td><td></td><td></td><td class="s">               return ()  if ($nth &gt; 5);</td></tr>
<tr><td class="h"><a name="2102"></a>2102</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2103"></a>2103</td><td></td><td></td><td></td><td></td><td class="s">               $d = 1;</td></tr>
<tr><td class="h"><a name="2104"></a>2104</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="2105"></a>2105</td><td></td><td></td><td></td><td></td><td class="s">                 @{ $self-&gt;__next_prev([$y,$m,1,0,0,0],1,$dow,1) };</td></tr>
<tr><td class="h"><a name="2106"></a>2106</td><td></td><td></td><td></td><td></td><td class="s">               my $m2 = $m;</td></tr>
<tr><td class="h"><a name="2107"></a>2107</td><td></td><td></td><td></td><td></td><td class="s">               ($y,$m2,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],7*($nth-1)) }</td></tr>
<tr><td class="h"><a name="2108"></a>2108</td><td></td><td></td><td></td><td></td><td class="s">                 if ($nth &gt; 1);</td></tr>
<tr><td class="h"><a name="2109"></a>2109</td><td></td><td></td><td></td><td></td><td class="s">               return ()  if (! $m2  ||  $m2 != $m);</td></tr>
<tr><td class="h"><a name="2110"></a>2110</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2111"></a>2111</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="2112"></a>2112</td><td></td><td></td><td></td><td></td><td class="s">               # DoW, nth MMM [YYYY]       (i.e. Sunday, 9th Dec 2008)</td></tr>
<tr><td class="h"><a name="2113"></a>2113</td><td></td><td></td><td></td><td></td><td class="s">               $d = $nth;</td></tr>
<tr><td class="h"><a name="2114"></a>2114</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2115"></a>2115</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2116"></a>2116</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2117"></a>2117</td><td></td><td></td><td></td><td></td><td class="s">            # nth DoW [in YYYY]</td></tr>
<tr><td class="h"><a name="2118"></a>2118</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2119"></a>2119</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d,$h,$mn,$s) = @{ $self-&gt;__next_prev([$y,1,1,0,0,0],1,$dow,1) };</td></tr>
<tr><td class="h"><a name="2120"></a>2120</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],7*($nth-1)) }</td></tr>
<tr><td class="h"><a name="2121"></a>2121</td><td></td><td></td><td></td><td></td><td class="s">              if ($nth &gt; 1);</td></tr>
<tr><td class="h"><a name="2122"></a>2122</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2123"></a>2123</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2124"></a>2124</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($field_w  &amp;&amp;  $dow) {</td></tr>
<tr><td class="h"><a name="2125"></a>2125</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2126"></a>2126</td><td></td><td></td><td></td><td></td><td class="s">         if (defined($n)  ||  $nth) {</td></tr>
<tr><td class="h"><a name="2127"></a>2127</td><td></td><td></td><td></td><td></td><td class="s">            # sunday week 22 in 1996</td></tr>
<tr><td class="h"><a name="2128"></a>2128</td><td></td><td></td><td></td><td></td><td class="s">            # sunday 22nd week in 1996</td></tr>
<tr><td class="h"><a name="2129"></a>2129</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2130"></a>2130</td><td></td><td></td><td></td><td></td><td class="s">            $n = $nth  if ($nth);</td></tr>
<tr><td class="h"><a name="2131"></a>2131</td><td></td><td></td><td></td><td></td><td class="s">            return ()  if (! $n);</td></tr>
<tr><td class="h"><a name="2132"></a>2132</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $dmb-&gt;week_of_year($y,$n) };</td></tr>
<tr><td class="h"><a name="2133"></a>2133</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $self-&gt;__next_prev([$y,$m,$d,0,0,0],1,$dow,1) };</td></tr>
<tr><td class="h"><a name="2134"></a>2134</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2135"></a>2135</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2136"></a>2136</td><td></td><td></td><td></td><td></td><td class="s">            # DoW week</td></tr>
<tr><td class="h"><a name="2137"></a>2137</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2138"></a>2138</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2139"></a>2139</td><td></td><td></td><td></td><td></td><td class="s">            $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2140"></a>2140</td><td></td><td></td><td></td><td></td><td class="s">            my $tmp    = $dmb-&gt;_config('firstday');</td></tr>
<tr><td class="h"><a name="2141"></a>2141</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $self-&gt;__next_prev([$y,$m,$d,0,0,0],1,$tmp,0) };</td></tr>
<tr><td class="h"><a name="2142"></a>2142</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $self-&gt;__next_prev([$y,$m,$d,0,0,0],1,$dow,1) };</td></tr>
<tr><td class="h"><a name="2143"></a>2143</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2144"></a>2144</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2145"></a>2145</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($nth  &amp;&amp;  ! $got_y) {</td></tr>
<tr><td class="h"><a name="2146"></a>2146</td><td></td><td></td><td></td><td></td><td class="s">         # 'in one week' makes it here too so return nothing in that case so it</td></tr>
<tr><td class="h"><a name="2147"></a>2147</td><td></td><td></td><td></td><td></td><td class="s">         # drops through to the deltas.</td></tr>
<tr><td class="h"><a name="2148"></a>2148</td><td></td><td></td><td></td><td></td><td class="s">         return ()  if ($field_d  ||  $field_w  ||  $field_m  ||  $field_y);</td></tr>
<tr><td class="h"><a name="2149"></a>2149</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)    = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2150"></a>2150</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate    = 1;</td></tr>
<tr><td class="h"><a name="2151"></a>2151</td><td></td><td></td><td></td><td></td><td class="s">         $d            = $nth;</td></tr>
<tr><td class="h"><a name="2152"></a>2152</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2153"></a>2153</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($special) {</td></tr>
<tr><td class="h"><a name="2154"></a>2154</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2155"></a>2155</td><td></td><td></td><td></td><td></td><td class="s">         my $delta  = $$dmb{'data'}{'wordmatch'}{'offset_date'}{lc($special)};</td></tr>
<tr><td class="h"><a name="2156"></a>2156</td><td></td><td></td><td></td><td></td><td class="s">         my @delta  = @{ $dmb-&gt;split('delta',$delta) };</td></tr>
<tr><td class="h"><a name="2157"></a>2157</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2158"></a>2158</td><td></td><td></td><td></td><td></td><td class="s">         my $tz     = $dmt-&gt;_now('tz');</td></tr>
<tr><td class="h"><a name="2159"></a>2159</td><td></td><td></td><td></td><td></td><td class="s">         my $isdst  = $dmt-&gt;_now('isdst');</td></tr>
<tr><td class="h"><a name="2160"></a>2160</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2161"></a>2161</td><td></td><td></td><td></td><td></td><td class="s">         my($err,$offset,$abbrev,$date2);</td></tr>
<tr><td class="h"><a name="2162"></a>2162</td><td></td><td></td><td></td><td></td><td class="s">         ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="2163"></a>2163</td><td></td><td></td><td></td><td></td><td class="s">           $self-&gt;__calc_date_delta([$y,$m,$d,0,0,0],[@delta],0,0,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="2164"></a>2164</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = @$date2;</td></tr>
<tr><td class="h"><a name="2165"></a>2165</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2166"></a>2166</td><td></td><td></td><td></td><td></td><td class="s">         if ($field_w) {</td></tr>
<tr><td class="h"><a name="2167"></a>2167</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],7) };</td></tr>
<tr><td class="h"><a name="2168"></a>2168</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2169"></a>2169</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2170"></a>2170</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2171"></a>2171</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2172"></a>2172</td><td class="c3">12</td><td class="c3"><span title="Avg 1µs">17µs</span></td><td></td><td></td><td class="s">      return ();</td></tr>
<tr><td class="h"><a name="2173"></a>2173</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2174"></a>2174</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2175"></a>2175</td><td></td><td></td><td></td><td></td><td class="s">   return($y,$m,$d,$dow);</td></tr>
<tr><td class="h"><a name="2176"></a>2176</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2177"></a>2177</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2178"></a>2178</td><td></td><td></td><td></td><td></td><td class="s"># Supply defaults for missing values (Y/M/D)</td></tr>
<tr><td class="h"><a name="2179"></a>2179</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 28.6ms (9.63+19.0) within Date::Manip::Date::_def_date which was called 2430 times, avg 12µs/call:
# 2430 times (9.63ms+19.0ms) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1736">line 1736</a>, avg 12µs/call</div></div>sub _def_date {</td></tr>
<tr><td class="h"><a name="2180"></a>2180</td><td class="c0">2430</td><td class="c0"><span title="Avg 322ns">782µs</span></td><td></td><td></td><td class="s">   my($self,$y,$m,$d,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="2181"></a>2181</td><td class="c0">2430</td><td class="c3"><span title="Avg 118ns">288µs</span></td><td></td><td></td><td class="s">   $y                 = ''  if (! defined $y);</td></tr>
<tr><td class="h"><a name="2182"></a>2182</td><td class="c0">2430</td><td class="c3"><span title="Avg 72ns">176µs</span></td><td></td><td></td><td class="s">   $m                 = ''  if (! defined $m);</td></tr>
<tr><td class="h"><a name="2183"></a>2183</td><td class="c0">2430</td><td class="c3"><span title="Avg 75ns">183µs</span></td><td></td><td></td><td class="s">   $d                 = ''  if (! defined $d);</td></tr>
<tr><td class="h"><a name="2184"></a>2184</td><td class="c0">2430</td><td class="c3"><span title="Avg 90ns">218µs</span></td><td></td><td></td><td class="s">   my $defined        = 0;</td></tr>
<tr><td class="h"><a name="2185"></a>2185</td><td class="c0">2430</td><td class="c3"><span title="Avg 120ns">292µs</span></td><td></td><td></td><td class="s">   my $dmt            = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2186"></a>2186</td><td class="c0">2430</td><td class="c2"><span title="Avg 126ns">307µs</span></td><td></td><td></td><td class="s">   my $dmb            = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2187"></a>2187</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2188"></a>2188</td><td></td><td></td><td></td><td></td><td class="s">   # If year was not specified, defaults to current year.</td></tr>
<tr><td class="h"><a name="2189"></a>2189</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2190"></a>2190</td><td></td><td></td><td></td><td></td><td class="s">   # We'll also fix the year (turn 2-digit into 4-digit).</td></tr>
<tr><td class="h"><a name="2191"></a>2191</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2192"></a>2192</td><td class="c0">2430</td><td class="c0"><span title="Avg 256ns">622µs</span></td><td></td><td></td><td class="s">   if ($y eq '') {</td></tr>
<tr><td class="h"><a name="2193"></a>2193</td><td></td><td></td><td></td><td></td><td class="s">      $y         = $dmt-&gt;_now('y',$$noupdate);</td></tr>
<tr><td class="h"><a name="2194"></a>2194</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2195"></a>2195</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[0] = '';</td></tr>
<tr><td class="h"><a name="2196"></a>2196</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2197"></a>2197</td><td class="c0">2430</td><td class="c0"><span title="Avg 899ns">2.18ms</span></td><td class="c0">2430</td><td class="c0">19.0ms</td><td class="s">      $y       = $dmt-&gt;_fix_year($y);<div class="calls"><div class="calls_out">      # spent  19.0ms making 2430 calls to <a href="Date-Manip-TZ_Base-pm-30-line.html#190">Date::Manip::TZ_Base::_fix_year</a>, avg 8µs/call</div></div></td></tr>
<tr><td class="h"><a name="2198"></a>2198</td><td class="c0">2430</td><td class="c2"><span title="Avg 163ns">397µs</span></td><td></td><td></td><td class="s">      $defined = 1;</td></tr>
<tr><td class="h"><a name="2199"></a>2199</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2200"></a>2200</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2201"></a>2201</td><td></td><td></td><td></td><td></td><td class="s">   # If the month was not specifed, but the year was, a default of</td></tr>
<tr><td class="h"><a name="2202"></a>2202</td><td></td><td></td><td></td><td></td><td class="s">   # 01 is supplied (this is a truncated date).</td></tr>
<tr><td class="h"><a name="2203"></a>2203</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2204"></a>2204</td><td></td><td></td><td></td><td></td><td class="s">   # If neither was specified, month defaults to the current month.</td></tr>
<tr><td class="h"><a name="2205"></a>2205</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2206"></a>2206</td><td class="c0">2430</td><td class="c0"><span title="Avg 273ns">663µs</span></td><td></td><td></td><td class="s">   if ($m ne '') {</td></tr>
<tr><td class="h"><a name="2207"></a>2207</td><td></td><td></td><td></td><td></td><td class="s">      $defined = 1;</td></tr>
<tr><td class="h"><a name="2208"></a>2208</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($defined) {</td></tr>
<tr><td class="h"><a name="2209"></a>2209</td><td></td><td></td><td></td><td></td><td class="s">      $m = 1;</td></tr>
<tr><td class="h"><a name="2210"></a>2210</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[1] = 1;</td></tr>
<tr><td class="h"><a name="2211"></a>2211</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2212"></a>2212</td><td></td><td></td><td></td><td></td><td class="s">      $m         = $dmt-&gt;_now('m',$$noupdate);</td></tr>
<tr><td class="h"><a name="2213"></a>2213</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2214"></a>2214</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[1] = '';</td></tr>
<tr><td class="h"><a name="2215"></a>2215</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2216"></a>2216</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2217"></a>2217</td><td></td><td></td><td></td><td></td><td class="s">   # If the day was not specified, but the year or month was, a default</td></tr>
<tr><td class="h"><a name="2218"></a>2218</td><td></td><td></td><td></td><td></td><td class="s">   # of 01 is supplied (this is a truncated date).</td></tr>
<tr><td class="h"><a name="2219"></a>2219</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2220"></a>2220</td><td></td><td></td><td></td><td></td><td class="s">   # If none were specified, it default to the current day.</td></tr>
<tr><td class="h"><a name="2221"></a>2221</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2222"></a>2222</td><td class="c0">2430</td><td class="c2"><span title="Avg 134ns">325µs</span></td><td></td><td></td><td class="s">   if ($d ne '') {</td></tr>
<tr><td class="h"><a name="2223"></a>2223</td><td></td><td></td><td></td><td></td><td class="s">      $defined = 1;</td></tr>
<tr><td class="h"><a name="2224"></a>2224</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($defined) {</td></tr>
<tr><td class="h"><a name="2225"></a>2225</td><td></td><td></td><td></td><td></td><td class="s">      $d = 1;</td></tr>
<tr><td class="h"><a name="2226"></a>2226</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[2] = 1;</td></tr>
<tr><td class="h"><a name="2227"></a>2227</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2228"></a>2228</td><td></td><td></td><td></td><td></td><td class="s">      $d         = $dmt-&gt;_now('d',$$noupdate);</td></tr>
<tr><td class="h"><a name="2229"></a>2229</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2230"></a>2230</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[2] = '';</td></tr>
<tr><td class="h"><a name="2231"></a>2231</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2232"></a>2232</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2233"></a>2233</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">3.24ms</span></td><td></td><td></td><td class="s">   return($y,$m,$d);</td></tr>
<tr><td class="h"><a name="2234"></a>2234</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2235"></a>2235</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2236"></a>2236</td><td></td><td></td><td></td><td></td><td class="s"># Supply defaults for missing values (Y/DoY)</td></tr>
<tr><td class="h"><a name="2237"></a>2237</td><td></td><td></td><td></td><td></td><td class="s">sub _def_date_doy {</td></tr>
<tr><td class="h"><a name="2238"></a>2238</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$y,$doy,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="2239"></a>2239</td><td></td><td></td><td></td><td></td><td class="s">   $y                = ''  if (! defined $y);</td></tr>
<tr><td class="h"><a name="2240"></a>2240</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2241"></a>2241</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2242"></a>2242</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2243"></a>2243</td><td></td><td></td><td></td><td></td><td class="s">   # If year was not specified, defaults to current year.</td></tr>
<tr><td class="h"><a name="2244"></a>2244</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2245"></a>2245</td><td></td><td></td><td></td><td></td><td class="s">   # We'll also fix the year (turn 2-digit into 4-digit).</td></tr>
<tr><td class="h"><a name="2246"></a>2246</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2247"></a>2247</td><td></td><td></td><td></td><td></td><td class="s">   if ($y eq '') {</td></tr>
<tr><td class="h"><a name="2248"></a>2248</td><td></td><td></td><td></td><td></td><td class="s">      $y         = $dmt-&gt;_now('y',$$noupdate);</td></tr>
<tr><td class="h"><a name="2249"></a>2249</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2250"></a>2250</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[0] = '';</td></tr>
<tr><td class="h"><a name="2251"></a>2251</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2252"></a>2252</td><td></td><td></td><td></td><td></td><td class="s">      $y = $dmt-&gt;_fix_year($y);</td></tr>
<tr><td class="h"><a name="2253"></a>2253</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2254"></a>2254</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2255"></a>2255</td><td></td><td></td><td></td><td></td><td class="s">   # DoY must be specified.</td></tr>
<tr><td class="h"><a name="2256"></a>2256</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2257"></a>2257</td><td></td><td></td><td></td><td></td><td class="s">   my($m,$d);</td></tr>
<tr><td class="h"><a name="2258"></a>2258</td><td></td><td></td><td></td><td></td><td class="s">   my $ymd = $dmb-&gt;day_of_year($y,$doy);</td></tr>
<tr><td class="h"><a name="2259"></a>2259</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2260"></a>2260</td><td></td><td></td><td></td><td></td><td class="s">   return @$ymd;</td></tr>
<tr><td class="h"><a name="2261"></a>2261</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2262"></a>2262</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2263"></a>2263</td><td></td><td></td><td></td><td></td><td class="s"># Supply defaults for missing values (YY/Www/D) and (Y/Www/D)</td></tr>
<tr><td class="h"><a name="2264"></a>2264</td><td></td><td></td><td></td><td></td><td class="s">sub _def_date_dow {</td></tr>
<tr><td class="h"><a name="2265"></a>2265</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$y,$w,$dow,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="2266"></a>2266</td><td></td><td></td><td></td><td></td><td class="s">   $y                   = ''  if (! defined $y);</td></tr>
<tr><td class="h"><a name="2267"></a>2267</td><td></td><td></td><td></td><td></td><td class="s">   $w                   = ''  if (! defined $w);</td></tr>
<tr><td class="h"><a name="2268"></a>2268</td><td></td><td></td><td></td><td></td><td class="s">   $dow                 = ''  if (! defined $dow);</td></tr>
<tr><td class="h"><a name="2269"></a>2269</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2270"></a>2270</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2271"></a>2271</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2272"></a>2272</td><td></td><td></td><td></td><td></td><td class="s">   # If year was not specified, defaults to current year.</td></tr>
<tr><td class="h"><a name="2273"></a>2273</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2274"></a>2274</td><td></td><td></td><td></td><td></td><td class="s">   # If it was specified and is a single digit, it is the</td></tr>
<tr><td class="h"><a name="2275"></a>2275</td><td></td><td></td><td></td><td></td><td class="s">   # year in the current decade.</td></tr>
<tr><td class="h"><a name="2276"></a>2276</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2277"></a>2277</td><td></td><td></td><td></td><td></td><td class="s">   # We'll also fix the year (turn 2-digit into 4-digit).</td></tr>
<tr><td class="h"><a name="2278"></a>2278</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2279"></a>2279</td><td></td><td></td><td></td><td></td><td class="s">   if ($y ne '') {</td></tr>
<tr><td class="h"><a name="2280"></a>2280</td><td></td><td></td><td></td><td></td><td class="s">      if (length($y) == 1) {</td></tr>
<tr><td class="h"><a name="2281"></a>2281</td><td></td><td></td><td></td><td></td><td class="s">         my $tmp   = $dmt-&gt;_now('y',$$noupdate);</td></tr>
<tr><td class="h"><a name="2282"></a>2282</td><td></td><td></td><td></td><td></td><td class="s">         $tmp      =~ s/.$/$y/;</td></tr>
<tr><td class="h"><a name="2283"></a>2283</td><td></td><td></td><td></td><td></td><td class="s">         $y        = $tmp;</td></tr>
<tr><td class="h"><a name="2284"></a>2284</td><td></td><td></td><td></td><td></td><td class="s">         $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2285"></a>2285</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2286"></a>2286</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2287"></a>2287</td><td></td><td></td><td></td><td></td><td class="s">         $y       = $dmt-&gt;_fix_year($y);</td></tr>
<tr><td class="h"><a name="2288"></a>2288</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2289"></a>2289</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2290"></a>2290</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2291"></a>2291</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2292"></a>2292</td><td></td><td></td><td></td><td></td><td class="s">      $y         = $dmt-&gt;_now('y',$$noupdate);</td></tr>
<tr><td class="h"><a name="2293"></a>2293</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2294"></a>2294</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[0] = '';</td></tr>
<tr><td class="h"><a name="2295"></a>2295</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2296"></a>2296</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2297"></a>2297</td><td></td><td></td><td></td><td></td><td class="s">   # If week was not specified, it defaults to the current</td></tr>
<tr><td class="h"><a name="2298"></a>2298</td><td></td><td></td><td></td><td></td><td class="s">   # week. Get the first day of the week.</td></tr>
<tr><td class="h"><a name="2299"></a>2299</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2300"></a>2300</td><td></td><td></td><td></td><td></td><td class="s">   my($m,$d);</td></tr>
<tr><td class="h"><a name="2301"></a>2301</td><td></td><td></td><td></td><td></td><td class="s">   if ($w ne '') {</td></tr>
<tr><td class="h"><a name="2302"></a>2302</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d) = @{ $dmb-&gt;week_of_year($y,$w) };</td></tr>
<tr><td class="h"><a name="2303"></a>2303</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2304"></a>2304</td><td></td><td></td><td></td><td></td><td class="s">      my($nowy,$nowm,$nowd) = $dmt-&gt;_now('now',$$noupdate);</td></tr>
<tr><td class="h"><a name="2305"></a>2305</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2306"></a>2306</td><td></td><td></td><td></td><td></td><td class="s">      my $noww;</td></tr>
<tr><td class="h"><a name="2307"></a>2307</td><td></td><td></td><td></td><td></td><td class="s">      ($nowy,$noww) = $dmb-&gt;week_of_year([$nowy,$nowm,$nowd]);</td></tr>
<tr><td class="h"><a name="2308"></a>2308</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d)    = @{ $dmb-&gt;week_of_year($nowy,$noww) };</td></tr>
<tr><td class="h"><a name="2309"></a>2309</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2310"></a>2310</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2311"></a>2311</td><td></td><td></td><td></td><td></td><td class="s">   # Handle the DoW</td></tr>
<tr><td class="h"><a name="2312"></a>2312</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2313"></a>2313</td><td></td><td></td><td></td><td></td><td class="s">   if ($dow eq '') {</td></tr>
<tr><td class="h"><a name="2314"></a>2314</td><td></td><td></td><td></td><td></td><td class="s">      $dow  = 1;</td></tr>
<tr><td class="h"><a name="2315"></a>2315</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2316"></a>2316</td><td></td><td></td><td></td><td></td><td class="s">   my $n    = $dmb-&gt;days_in_month($y,$m);</td></tr>
<tr><td class="h"><a name="2317"></a>2317</td><td></td><td></td><td></td><td></td><td class="s">   $d      += ($dow-1);</td></tr>
<tr><td class="h"><a name="2318"></a>2318</td><td></td><td></td><td></td><td></td><td class="s">   if ($d &gt; $n) {</td></tr>
<tr><td class="h"><a name="2319"></a>2319</td><td></td><td></td><td></td><td></td><td class="s">      $m++;</td></tr>
<tr><td class="h"><a name="2320"></a>2320</td><td></td><td></td><td></td><td></td><td class="s">      if ($m==13) {</td></tr>
<tr><td class="h"><a name="2321"></a>2321</td><td></td><td></td><td></td><td></td><td class="s">         $y++;</td></tr>
<tr><td class="h"><a name="2322"></a>2322</td><td></td><td></td><td></td><td></td><td class="s">         $m = 1;</td></tr>
<tr><td class="h"><a name="2323"></a>2323</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2324"></a>2324</td><td></td><td></td><td></td><td></td><td class="s">      $d = $d-$n;</td></tr>
<tr><td class="h"><a name="2325"></a>2325</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2326"></a>2326</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2327"></a>2327</td><td></td><td></td><td></td><td></td><td class="s">   return($y,$m,$d);</td></tr>
<tr><td class="h"><a name="2328"></a>2328</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2329"></a>2329</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2330"></a>2330</td><td></td><td></td><td></td><td></td><td class="s"># Supply defaults for missing values (HH:MN:SS)</td></tr>
<tr><td class="h"><a name="2331"></a>2331</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 9.52ms within Date::Manip::Date::_def_time which was called 4872 times, avg 2µs/call:
# 2436 times (5.87ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1666">line 1666</a>, avg 2µs/call
# 2436 times (3.65ms+0s) by Date::Manip::Date::_time at <a href="Date-Manip-Date-pm-12-line.html#1315">line 1315</a>, avg 1µs/call</div></div>sub _def_time {</td></tr>
<tr><td class="h"><a name="2332"></a>2332</td><td class="c0">4872</td><td class="c0"><span title="Avg 270ns">1.31ms</span></td><td></td><td></td><td class="s">   my($self,$h,$m,$s,$noupdate) = @_;</td></tr>
<tr><td class="h"><a name="2333"></a>2333</td><td class="c0">4872</td><td class="c1"><span title="Avg 102ns">497µs</span></td><td></td><td></td><td class="s">   $h                 = ''  if (! defined $h);</td></tr>
<tr><td class="h"><a name="2334"></a>2334</td><td class="c0">4872</td><td class="c3"><span title="Avg 60ns">294µs</span></td><td></td><td></td><td class="s">   $m                 = ''  if (! defined $m);</td></tr>
<tr><td class="h"><a name="2335"></a>2335</td><td class="c0">4872</td><td class="c3"><span title="Avg 57ns">277µs</span></td><td></td><td></td><td class="s">   $s                 = ''  if (! defined $s);</td></tr>
<tr><td class="h"><a name="2336"></a>2336</td><td class="c0">4872</td><td class="c1"><span title="Avg 96ns">467µs</span></td><td></td><td></td><td class="s">   my $defined        = 0;</td></tr>
<tr><td class="h"><a name="2337"></a>2337</td><td class="c0">4872</td><td class="c0"><span title="Avg 132ns">642µs</span></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2338"></a>2338</td><td class="c0">4872</td><td class="c1"><span title="Avg 118ns">576µs</span></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2339"></a>2339</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2340"></a>2340</td><td></td><td></td><td></td><td></td><td class="s">   # If no time was specified, defaults to 00:00:00.</td></tr>
<tr><td class="h"><a name="2341"></a>2341</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2342"></a>2342</td><td class="c0">4872</td><td class="c1"><span title="Avg 116ns">563µs</span></td><td></td><td></td><td class="s">   if ($h eq ''  &amp;&amp;</td></tr>
<tr><td class="h"><a name="2343"></a>2343</td><td></td><td></td><td></td><td></td><td class="s">       $m eq ''  &amp;&amp;</td></tr>
<tr><td class="h"><a name="2344"></a>2344</td><td></td><td></td><td></td><td></td><td class="s">       $s eq '') {</td></tr>
<tr><td class="h"><a name="2345"></a>2345</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[3] = 1;</td></tr>
<tr><td class="h"><a name="2346"></a>2346</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[4] = 1;</td></tr>
<tr><td class="h"><a name="2347"></a>2347</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[5] = 1;</td></tr>
<tr><td class="h"><a name="2348"></a>2348</td><td></td><td></td><td></td><td></td><td class="s">      return(0,0,0);</td></tr>
<tr><td class="h"><a name="2349"></a>2349</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2350"></a>2350</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2351"></a>2351</td><td></td><td></td><td></td><td></td><td class="s">   # If hour was not specified, defaults to current hour.</td></tr>
<tr><td class="h"><a name="2352"></a>2352</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2353"></a>2353</td><td class="c0">4872</td><td class="c0"><span title="Avg 158ns">771µs</span></td><td></td><td></td><td class="s">   if ($h ne '') {</td></tr>
<tr><td class="h"><a name="2354"></a>2354</td><td></td><td></td><td></td><td></td><td class="s">      $defined = 1;</td></tr>
<tr><td class="h"><a name="2355"></a>2355</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2356"></a>2356</td><td></td><td></td><td></td><td></td><td class="s">      $h         = $dmt-&gt;_now('h',$$noupdate);</td></tr>
<tr><td class="h"><a name="2357"></a>2357</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2358"></a>2358</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[3] = '';</td></tr>
<tr><td class="h"><a name="2359"></a>2359</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2360"></a>2360</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2361"></a>2361</td><td></td><td></td><td></td><td></td><td class="s">   # If the minute was not specifed, but the hour was, a default of</td></tr>
<tr><td class="h"><a name="2362"></a>2362</td><td></td><td></td><td></td><td></td><td class="s">   # 00 is supplied (this is a truncated time).</td></tr>
<tr><td class="h"><a name="2363"></a>2363</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2364"></a>2364</td><td></td><td></td><td></td><td></td><td class="s">   # If neither was specified, minute defaults to the current minute.</td></tr>
<tr><td class="h"><a name="2365"></a>2365</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2366"></a>2366</td><td class="c0">4872</td><td class="c1"><span title="Avg 109ns">532µs</span></td><td></td><td></td><td class="s">   if ($m ne '') {</td></tr>
<tr><td class="h"><a name="2367"></a>2367</td><td></td><td></td><td></td><td></td><td class="s">      $defined = 1;</td></tr>
<tr><td class="h"><a name="2368"></a>2368</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($defined) {</td></tr>
<tr><td class="h"><a name="2369"></a>2369</td><td></td><td></td><td></td><td></td><td class="s">      $m = 0;</td></tr>
<tr><td class="h"><a name="2370"></a>2370</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[4] = 1;</td></tr>
<tr><td class="h"><a name="2371"></a>2371</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2372"></a>2372</td><td></td><td></td><td></td><td></td><td class="s">      $m         = $dmt-&gt;_now('mn',$$noupdate);</td></tr>
<tr><td class="h"><a name="2373"></a>2373</td><td></td><td></td><td></td><td></td><td class="s">      $$noupdate = 1;</td></tr>
<tr><td class="h"><a name="2374"></a>2374</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[4] = '';</td></tr>
<tr><td class="h"><a name="2375"></a>2375</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2376"></a>2376</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2377"></a>2377</td><td></td><td></td><td></td><td></td><td class="s">   # If the second was not specified (either the hour or the minute were),</td></tr>
<tr><td class="h"><a name="2378"></a>2378</td><td></td><td></td><td></td><td></td><td class="s">   # a default of 00 is supplied (this is a truncated time).</td></tr>
<tr><td class="h"><a name="2379"></a>2379</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2380"></a>2380</td><td class="c0">4872</td><td class="c1"><span title="Avg 94ns">458µs</span></td><td></td><td></td><td class="s">   if ($s eq '') {</td></tr>
<tr><td class="h"><a name="2381"></a>2381</td><td></td><td></td><td></td><td></td><td class="s">      $s = 0;</td></tr>
<tr><td class="h"><a name="2382"></a>2382</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}[5] = 1;</td></tr>
<tr><td class="h"><a name="2383"></a>2383</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2384"></a>2384</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2385"></a>2385</td><td class="c0">4872</td><td class="c0"><span title="Avg 1µs">6.41ms</span></td><td></td><td></td><td class="s">   return($h,$m,$s);</td></tr>
<tr><td class="h"><a name="2386"></a>2386</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2387"></a>2387</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2388"></a>2388</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="2389"></a>2389</td><td></td><td></td><td></td><td></td><td class="s"># OTHER DATE METHODS</td></tr>
<tr><td class="h"><a name="2390"></a>2390</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="2391"></a>2391</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2392"></a>2392</td><td></td><td></td><td></td><td></td><td class="s"># Gets the date in the parsed timezone (if $type = ''), local timezone</td></tr>
<tr><td class="h"><a name="2393"></a>2393</td><td></td><td></td><td></td><td></td><td class="s"># (if $type = 'local') or GMT timezone (if $type = 'gmt').</td></tr>
<tr><td class="h"><a name="2394"></a>2394</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="2395"></a>2395</td><td></td><td></td><td></td><td></td><td class="s"># Gets the string value in scalar context, the split value in list</td></tr>
<tr><td class="h"><a name="2396"></a>2396</td><td></td><td></td><td></td><td></td><td class="s"># context.</td></tr>
<tr><td class="h"><a name="2397"></a>2397</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="2398"></a>2398</td><td></td><td></td><td></td><td></td><td class="s">sub value {</td></tr>
<tr><td class="h"><a name="2399"></a>2399</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$type) = @_;</td></tr>
<tr><td class="h"><a name="2400"></a>2400</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2401"></a>2401</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2402"></a>2402</td><td></td><td></td><td></td><td></td><td class="s">   my $date;</td></tr>
<tr><td class="h"><a name="2403"></a>2403</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2404"></a>2404</td><td></td><td></td><td></td><td></td><td class="s">   while (1) {</td></tr>
<tr><td class="h"><a name="2405"></a>2405</td><td></td><td></td><td></td><td></td><td class="s">      if (! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="2406"></a>2406</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = '[value] Object does not contain a date';</td></tr>
<tr><td class="h"><a name="2407"></a>2407</td><td></td><td></td><td></td><td></td><td class="s">         last;</td></tr>
<tr><td class="h"><a name="2408"></a>2408</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2409"></a>2409</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2410"></a>2410</td><td></td><td></td><td></td><td></td><td class="s">      $type           = ''  if (! $type);</td></tr>
<tr><td class="h"><a name="2411"></a>2411</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2412"></a>2412</td><td></td><td></td><td></td><td></td><td class="s">      if ($type eq 'gmt') {</td></tr>
<tr><td class="h"><a name="2413"></a>2413</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2414"></a>2414</td><td></td><td></td><td></td><td></td><td class="s">         if (! @{ $$self{'data'}{'gmt'} }) {</td></tr>
<tr><td class="h"><a name="2415"></a>2415</td><td></td><td></td><td></td><td></td><td class="s">            my $zone = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="2416"></a>2416</td><td></td><td></td><td></td><td></td><td class="s">            my $date = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2417"></a>2417</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2418"></a>2418</td><td></td><td></td><td></td><td></td><td class="s">            if ($zone eq 'Etc/GMT') {</td></tr>
<tr><td class="h"><a name="2419"></a>2419</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'data'}{'gmt'}      = $date;</td></tr>
<tr><td class="h"><a name="2420"></a>2420</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2421"></a>2421</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="2422"></a>2422</td><td></td><td></td><td></td><td></td><td class="s">               my $isdst   = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="2423"></a>2423</td><td></td><td></td><td></td><td></td><td class="s">               my($err,$d) = $dmt-&gt;convert_to_gmt($date,$zone,$isdst);</td></tr>
<tr><td class="h"><a name="2424"></a>2424</td><td></td><td></td><td></td><td></td><td class="s">               if ($err) {</td></tr>
<tr><td class="h"><a name="2425"></a>2425</td><td></td><td></td><td></td><td></td><td class="s">                  $$self{'err'} = '[value] Unable to convert date to GMT';</td></tr>
<tr><td class="h"><a name="2426"></a>2426</td><td></td><td></td><td></td><td></td><td class="s">                  last;</td></tr>
<tr><td class="h"><a name="2427"></a>2427</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="2428"></a>2428</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'data'}{'gmt'}      = $d;</td></tr>
<tr><td class="h"><a name="2429"></a>2429</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2430"></a>2430</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2431"></a>2431</td><td></td><td></td><td></td><td></td><td class="s">         $date = $$self{'data'}{'gmt'};</td></tr>
<tr><td class="h"><a name="2432"></a>2432</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2433"></a>2433</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($type eq 'local') {</td></tr>
<tr><td class="h"><a name="2434"></a>2434</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2435"></a>2435</td><td></td><td></td><td></td><td></td><td class="s">         if (! @{ $$self{'data'}{'loc'} }) {</td></tr>
<tr><td class="h"><a name="2436"></a>2436</td><td></td><td></td><td></td><td></td><td class="s">            my $zone  = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="2437"></a>2437</td><td></td><td></td><td></td><td></td><td class="s">            $date     = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2438"></a>2438</td><td></td><td></td><td></td><td></td><td class="s">            my $local = $dmt-&gt;_now('tz',1);</td></tr>
<tr><td class="h"><a name="2439"></a>2439</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2440"></a>2440</td><td></td><td></td><td></td><td></td><td class="s">            if ($zone eq $local) {</td></tr>
<tr><td class="h"><a name="2441"></a>2441</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'data'}{'loc'}      = $date;</td></tr>
<tr><td class="h"><a name="2442"></a>2442</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2443"></a>2443</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="2444"></a>2444</td><td></td><td></td><td></td><td></td><td class="s">               my $isdst   = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="2445"></a>2445</td><td></td><td></td><td></td><td></td><td class="s">               my($err,$d) = $dmt-&gt;convert_to_local($date,$zone,$isdst);</td></tr>
<tr><td class="h"><a name="2446"></a>2446</td><td></td><td></td><td></td><td></td><td class="s">               if ($err) {</td></tr>
<tr><td class="h"><a name="2447"></a>2447</td><td></td><td></td><td></td><td></td><td class="s">                  $$self{'err'} = '[value] Unable to convert date to localtime';</td></tr>
<tr><td class="h"><a name="2448"></a>2448</td><td></td><td></td><td></td><td></td><td class="s">                  last;</td></tr>
<tr><td class="h"><a name="2449"></a>2449</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="2450"></a>2450</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'data'}{'loc'}      = $d;</td></tr>
<tr><td class="h"><a name="2451"></a>2451</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2452"></a>2452</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2453"></a>2453</td><td></td><td></td><td></td><td></td><td class="s">         $date = $$self{'data'}{'loc'};</td></tr>
<tr><td class="h"><a name="2454"></a>2454</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2455"></a>2455</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2456"></a>2456</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2457"></a>2457</td><td></td><td></td><td></td><td></td><td class="s">         $date = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2458"></a>2458</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2459"></a>2459</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2460"></a>2460</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2461"></a>2461</td><td></td><td></td><td></td><td></td><td class="s">      last;</td></tr>
<tr><td class="h"><a name="2462"></a>2462</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2463"></a>2463</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2464"></a>2464</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}) {</td></tr>
<tr><td class="h"><a name="2465"></a>2465</td><td></td><td></td><td></td><td></td><td class="s">      if (wantarray) {</td></tr>
<tr><td class="h"><a name="2466"></a>2466</td><td></td><td></td><td></td><td></td><td class="s">         return ();</td></tr>
<tr><td class="h"><a name="2467"></a>2467</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2468"></a>2468</td><td></td><td></td><td></td><td></td><td class="s">         return '';</td></tr>
<tr><td class="h"><a name="2469"></a>2469</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2470"></a>2470</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2471"></a>2471</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2472"></a>2472</td><td></td><td></td><td></td><td></td><td class="s">   if (wantarray) {</td></tr>
<tr><td class="h"><a name="2473"></a>2473</td><td></td><td></td><td></td><td></td><td class="s">      return @$date;</td></tr>
<tr><td class="h"><a name="2474"></a>2474</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2475"></a>2475</td><td></td><td></td><td></td><td></td><td class="s">      return $dmb-&gt;join('date',$date);</td></tr>
<tr><td class="h"><a name="2476"></a>2476</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2477"></a>2477</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2478"></a>2478</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2479"></a>2479</td><td></td><td></td><td></td><td></td><td class="s">sub cmp {</td></tr>
<tr><td class="h"><a name="2480"></a>2480</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date) = @_;</td></tr>
<tr><td class="h"><a name="2481"></a>2481</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="2482"></a>2482</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [cmp] Arguments must be valid dates: date1\n&quot;;</td></tr>
<tr><td class="h"><a name="2483"></a>2483</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="2484"></a>2484</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2485"></a>2485</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2486"></a>2486</td><td></td><td></td><td></td><td></td><td class="s">   if (! ref($date) eq 'Date::Manip::Date') {</td></tr>
<tr><td class="h"><a name="2487"></a>2487</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [cmp] Argument must be a Date::Manip::Date object\n&quot;;</td></tr>
<tr><td class="h"><a name="2488"></a>2488</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="2489"></a>2489</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2490"></a>2490</td><td></td><td></td><td></td><td></td><td class="s">   if ($$date{'err'}  ||  ! $$date{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="2491"></a>2491</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [cmp] Arguments must be valid dates: date2\n&quot;;</td></tr>
<tr><td class="h"><a name="2492"></a>2492</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="2493"></a>2493</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2494"></a>2494</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2495"></a>2495</td><td></td><td></td><td></td><td></td><td class="s">   my($d1,$d2);</td></tr>
<tr><td class="h"><a name="2496"></a>2496</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'data'}{'tz'} eq $$date{'data'}{'tz'}) {</td></tr>
<tr><td class="h"><a name="2497"></a>2497</td><td></td><td></td><td></td><td></td><td class="s">      $d1 = $self-&gt;value();</td></tr>
<tr><td class="h"><a name="2498"></a>2498</td><td></td><td></td><td></td><td></td><td class="s">      $d2 = $date-&gt;value();</td></tr>
<tr><td class="h"><a name="2499"></a>2499</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2500"></a>2500</td><td></td><td></td><td></td><td></td><td class="s">      $d1 = $self-&gt;value('gmt');</td></tr>
<tr><td class="h"><a name="2501"></a>2501</td><td></td><td></td><td></td><td></td><td class="s">      $d2 = $date-&gt;value('gmt');</td></tr>
<tr><td class="h"><a name="2502"></a>2502</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2503"></a>2503</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2504"></a>2504</td><td></td><td></td><td></td><td></td><td class="s">   return ($d1 cmp $d2);</td></tr>
<tr><td class="h"><a name="2505"></a>2505</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2506"></a>2506</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2507"></a>2507</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 6µs within Date::Manip::Date::BEGIN@2507 which was called:
#    once (6µs+0s) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#2727">line 2727</a></div></div>BEGIN {</td></tr>
<tr><td class="h"><a name="2508"></a>2508</td><td class="c3">1</td><td class="c3"><span title="Avg 7µs">7µs</span></td><td></td><td></td><td class="s">   my %field = qw(y 0 m 1 d 2 h 3 mn 4 s 5);</td></tr>
<tr><td class="h"><a name="2509"></a>2509</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2510"></a>2510</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 105ms (34.0+70.6) within Date::Manip::Date::set which was called 2430 times, avg 43µs/call:
# 2430 times (34.0ms+70.6ms) by Date::Manip::Date::_parse_check at <a href="Date-Manip-Date-pm-12-line.html#1024">line 1024</a>, avg 43µs/call</div></div>   sub set {</td></tr>
<tr><td class="h"><a name="2511"></a>2511</td><td class="c0">2430</td><td class="c0"><span title="Avg 374ns">909µs</span></td><td></td><td></td><td class="s">      my($self,$field,@val) = @_;</td></tr>
<tr><td class="h"><a name="2512"></a>2512</td><td class="c0">2430</td><td class="c1"><span title="Avg 218ns">529µs</span></td><td></td><td></td><td class="s">      $field    = lc($field);</td></tr>
<tr><td class="h"><a name="2513"></a>2513</td><td class="c0">2430</td><td class="c1"><span title="Avg 207ns">503µs</span></td><td></td><td></td><td class="s">      my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2514"></a>2514</td><td class="c0">2430</td><td class="c2"><span title="Avg 155ns">378µs</span></td><td></td><td></td><td class="s">      my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2515"></a>2515</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2516"></a>2516</td><td></td><td></td><td></td><td></td><td class="s">      # Make sure $self includes a valid date (unless the entire date is</td></tr>
<tr><td class="h"><a name="2517"></a>2517</td><td></td><td></td><td></td><td></td><td class="s">      # being set, in which case it doesn't matter).</td></tr>
<tr><td class="h"><a name="2518"></a>2518</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2519"></a>2519</td><td class="c0">2430</td><td class="c1"><span title="Avg 231ns">561µs</span></td><td></td><td></td><td class="s">      my $date = [];</td></tr>
<tr><td class="h"><a name="2520"></a>2520</td><td class="c0">2430</td><td class="c3"><span title="Avg 100ns">242µs</span></td><td></td><td></td><td class="s">      my(@def,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="2521"></a>2521</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2522"></a>2522</td><td class="c0">2430</td><td class="c1"><span title="Avg 241ns">586µs</span></td><td></td><td></td><td class="s">      if ($field eq 'zdate') {</td></tr>
<tr><td class="h"><a name="2523"></a>2523</td><td></td><td></td><td></td><td></td><td class="s">         # If {data}{set} = 2, we want to preserve the defaults. Also, we've</td></tr>
<tr><td class="h"><a name="2524"></a>2524</td><td></td><td></td><td></td><td></td><td class="s">         # already initialized.</td></tr>
<tr><td class="h"><a name="2525"></a>2525</td><td></td><td></td><td></td><td></td><td class="s">         #</td></tr>
<tr><td class="h"><a name="2526"></a>2526</td><td></td><td></td><td></td><td></td><td class="s">         # It is only set in the parse routines which means that this was</td></tr>
<tr><td class="h"><a name="2527"></a>2527</td><td></td><td></td><td></td><td></td><td class="s">         # called via _parse_check.</td></tr>
<tr><td class="h"><a name="2528"></a>2528</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2529"></a>2529</td><td class="c0">2430</td><td class="c0"><span title="Avg 329ns">799µs</span></td><td></td><td></td><td class="s">         $self-&gt;_init()  if ($$self{'data'}{'set'} != 2);</td></tr>
<tr><td class="h"><a name="2530"></a>2530</td><td class="c0">2430</td><td class="c0"><span title="Avg 633ns">1.54ms</span></td><td></td><td></td><td class="s">         @def = @{ $$self{'data'}{'def'} };</td></tr>
<tr><td class="h"><a name="2531"></a>2531</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2532"></a>2532</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($field eq 'date') {</td></tr>
<tr><td class="h"><a name="2533"></a>2533</td><td></td><td></td><td></td><td></td><td class="s">         if ($$self{'data'}{'set'}  &amp;&amp;  ! $$self{'err'}) {</td></tr>
<tr><td class="h"><a name="2534"></a>2534</td><td></td><td></td><td></td><td></td><td class="s">            $tz      = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="2535"></a>2535</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2536"></a>2536</td><td></td><td></td><td></td><td></td><td class="s">            $tz      = $dmt-&gt;_now('tz',1);</td></tr>
<tr><td class="h"><a name="2537"></a>2537</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2538"></a>2538</td><td></td><td></td><td></td><td></td><td class="s">         $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="2539"></a>2539</td><td></td><td></td><td></td><td></td><td class="s">         @def = @{ $$self{'data'}{'def'} };</td></tr>
<tr><td class="h"><a name="2540"></a>2540</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2541"></a>2541</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2542"></a>2542</td><td></td><td></td><td></td><td></td><td class="s">         return 1  if ($$self{'err'}  ||  ! $$self{'data'}{'set'});</td></tr>
<tr><td class="h"><a name="2543"></a>2543</td><td></td><td></td><td></td><td></td><td class="s">         $date    = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2544"></a>2544</td><td></td><td></td><td></td><td></td><td class="s">         $tz      = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="2545"></a>2545</td><td></td><td></td><td></td><td></td><td class="s">         $isdst   = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="2546"></a>2546</td><td></td><td></td><td></td><td></td><td class="s">         @def = @{ $$self{'data'}{'def'} };</td></tr>
<tr><td class="h"><a name="2547"></a>2547</td><td></td><td></td><td></td><td></td><td class="s">         $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="2548"></a>2548</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2549"></a>2549</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2550"></a>2550</td><td></td><td></td><td></td><td></td><td class="s">      # Check the arguments</td></tr>
<tr><td class="h"><a name="2551"></a>2551</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2552"></a>2552</td><td class="c0">2430</td><td class="c3"><span title="Avg 108ns">263µs</span></td><td></td><td></td><td class="s">      my($err,$new_tz,$new_date,$new_time);</td></tr>
<tr><td class="h"><a name="2553"></a>2553</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2554"></a>2554</td><td class="c0">2430</td><td class="c0"><span title="Avg 361ns">878µs</span></td><td></td><td></td><td class="s">      if ($field eq 'date') {</td></tr>
<tr><td class="h"><a name="2555"></a>2555</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2556"></a>2556</td><td></td><td></td><td></td><td></td><td class="s">         if ($#val == 0) {</td></tr>
<tr><td class="h"><a name="2557"></a>2557</td><td></td><td></td><td></td><td></td><td class="s">            # date,DATE</td></tr>
<tr><td class="h"><a name="2558"></a>2558</td><td></td><td></td><td></td><td></td><td class="s">            $new_date = $val[0];</td></tr>
<tr><td class="h"><a name="2559"></a>2559</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1) {</td></tr>
<tr><td class="h"><a name="2560"></a>2560</td><td></td><td></td><td></td><td></td><td class="s">            # date,DATE,ISDST</td></tr>
<tr><td class="h"><a name="2561"></a>2561</td><td></td><td></td><td></td><td></td><td class="s">            ($new_date,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2562"></a>2562</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2563"></a>2563</td><td></td><td></td><td></td><td></td><td class="s">            $err = 1;</td></tr>
<tr><td class="h"><a name="2564"></a>2564</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2565"></a>2565</td><td></td><td></td><td></td><td></td><td class="s">         for (my $i=0; $i&lt;=5; $i++) {</td></tr>
<tr><td class="h"><a name="2566"></a>2566</td><td></td><td></td><td></td><td></td><td class="s">            $def[$i] = 0  if ($def[$i]);</td></tr>
<tr><td class="h"><a name="2567"></a>2567</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2568"></a>2568</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2569"></a>2569</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($field eq 'time') {</td></tr>
<tr><td class="h"><a name="2570"></a>2570</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2571"></a>2571</td><td></td><td></td><td></td><td></td><td class="s">         if ($#val == 0) {</td></tr>
<tr><td class="h"><a name="2572"></a>2572</td><td></td><td></td><td></td><td></td><td class="s">            # time,TIME</td></tr>
<tr><td class="h"><a name="2573"></a>2573</td><td></td><td></td><td></td><td></td><td class="s">            $new_time = $val[0];</td></tr>
<tr><td class="h"><a name="2574"></a>2574</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1) {</td></tr>
<tr><td class="h"><a name="2575"></a>2575</td><td></td><td></td><td></td><td></td><td class="s">            # time,TIME,ISDST</td></tr>
<tr><td class="h"><a name="2576"></a>2576</td><td></td><td></td><td></td><td></td><td class="s">            ($new_time,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2577"></a>2577</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2578"></a>2578</td><td></td><td></td><td></td><td></td><td class="s">            $err = 1;</td></tr>
<tr><td class="h"><a name="2579"></a>2579</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2580"></a>2580</td><td></td><td></td><td></td><td></td><td class="s">         $def[3] = 0  if ($def[3]);</td></tr>
<tr><td class="h"><a name="2581"></a>2581</td><td></td><td></td><td></td><td></td><td class="s">         $def[4] = 0  if ($def[4]);</td></tr>
<tr><td class="h"><a name="2582"></a>2582</td><td></td><td></td><td></td><td></td><td class="s">         $def[5] = 0  if ($def[5]);</td></tr>
<tr><td class="h"><a name="2583"></a>2583</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2584"></a>2584</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($field eq 'zdate') {</td></tr>
<tr><td class="h"><a name="2585"></a>2585</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2586"></a>2586</td><td class="c0">2430</td><td class="c0"><span title="Avg 701ns">1.70ms</span></td><td></td><td></td><td class="s">         if ($#val == 0) {</td></tr>
<tr><td class="h"><a name="2587"></a>2587</td><td></td><td></td><td></td><td></td><td class="s">            # zdate,DATE</td></tr>
<tr><td class="h"><a name="2588"></a>2588</td><td></td><td></td><td></td><td></td><td class="s">            $new_date = $val[0];</td></tr>
<tr><td class="h"><a name="2589"></a>2589</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1    &amp;&amp;  ($val[1] eq '0'  ||  $val[1] eq '1')) {</td></tr>
<tr><td class="h"><a name="2590"></a>2590</td><td></td><td></td><td></td><td></td><td class="s">            # zdate,DATE,ISDST</td></tr>
<tr><td class="h"><a name="2591"></a>2591</td><td></td><td></td><td></td><td></td><td class="s">            ($new_date,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2592"></a>2592</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1) {</td></tr>
<tr><td class="h"><a name="2593"></a>2593</td><td></td><td></td><td></td><td></td><td class="s">            # zdate,ZONE,DATE</td></tr>
<tr><td class="h"><a name="2594"></a>2594</td><td></td><td></td><td></td><td></td><td class="s">            ($new_tz,$new_date) = @val;</td></tr>
<tr><td class="h"><a name="2595"></a>2595</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 2) {</td></tr>
<tr><td class="h"><a name="2596"></a>2596</td><td></td><td></td><td></td><td></td><td class="s">            # zdate,ZONE,DATE,ISDST</td></tr>
<tr><td class="h"><a name="2597"></a>2597</td><td></td><td></td><td></td><td></td><td class="s">            ($new_tz,$new_date,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2598"></a>2598</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2599"></a>2599</td><td></td><td></td><td></td><td></td><td class="s">            $err = 1;</td></tr>
<tr><td class="h"><a name="2600"></a>2600</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2601"></a>2601</td><td class="c0">2430</td><td class="c0"><span title="Avg 1µs">3.04ms</span></td><td></td><td></td><td class="s">         for (my $i=0; $i&lt;=5; $i++) {</td></tr>
<tr><td class="h"><a name="2602"></a>2602</td><td></td><td></td><td></td><td></td><td class="s">            $def[$i] = 0  if ($def[$i]);</td></tr>
<tr><td class="h"><a name="2603"></a>2603</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2604"></a>2604</td><td class="c0">2430</td><td class="c2"><span title="Avg 157ns">382µs</span></td><td></td><td></td><td class="s">         $tz = $dmt-&gt;_now('tz',1)  if (! $new_tz);</td></tr>
<tr><td class="h"><a name="2605"></a>2605</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2606"></a>2606</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($field eq 'zone') {</td></tr>
<tr><td class="h"><a name="2607"></a>2607</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2608"></a>2608</td><td></td><td></td><td></td><td></td><td class="s">         if ($#val == -1) {</td></tr>
<tr><td class="h"><a name="2609"></a>2609</td><td></td><td></td><td></td><td></td><td class="s">            # zone</td></tr>
<tr><td class="h"><a name="2610"></a>2610</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 0  &amp;&amp;  ($val[0] eq '0'  ||  $val[0] eq '1')) {</td></tr>
<tr><td class="h"><a name="2611"></a>2611</td><td></td><td></td><td></td><td></td><td class="s">            # zone,ISDST</td></tr>
<tr><td class="h"><a name="2612"></a>2612</td><td></td><td></td><td></td><td></td><td class="s">            $isdst = $val[0];</td></tr>
<tr><td class="h"><a name="2613"></a>2613</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 0) {</td></tr>
<tr><td class="h"><a name="2614"></a>2614</td><td></td><td></td><td></td><td></td><td class="s">            # zone,ZONE</td></tr>
<tr><td class="h"><a name="2615"></a>2615</td><td></td><td></td><td></td><td></td><td class="s">            $new_tz = $val[0];</td></tr>
<tr><td class="h"><a name="2616"></a>2616</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1) {</td></tr>
<tr><td class="h"><a name="2617"></a>2617</td><td></td><td></td><td></td><td></td><td class="s">            # zone,ZONE,ISDST</td></tr>
<tr><td class="h"><a name="2618"></a>2618</td><td></td><td></td><td></td><td></td><td class="s">            ($new_tz,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2619"></a>2619</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2620"></a>2620</td><td></td><td></td><td></td><td></td><td class="s">            $err = 1;</td></tr>
<tr><td class="h"><a name="2621"></a>2621</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2622"></a>2622</td><td></td><td></td><td></td><td></td><td class="s">         $tz = $dmt-&gt;_now('tz',1)  if (! $new_tz);</td></tr>
<tr><td class="h"><a name="2623"></a>2623</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2624"></a>2624</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (exists $field{$field}) {</td></tr>
<tr><td class="h"><a name="2625"></a>2625</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2626"></a>2626</td><td></td><td></td><td></td><td></td><td class="s">         my $i   = $field{$field};</td></tr>
<tr><td class="h"><a name="2627"></a>2627</td><td></td><td></td><td></td><td></td><td class="s">         my $val;</td></tr>
<tr><td class="h"><a name="2628"></a>2628</td><td></td><td></td><td></td><td></td><td class="s">         if ($#val == 0) {</td></tr>
<tr><td class="h"><a name="2629"></a>2629</td><td></td><td></td><td></td><td></td><td class="s">            $val = $val[0];</td></tr>
<tr><td class="h"><a name="2630"></a>2630</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($#val == 1) {</td></tr>
<tr><td class="h"><a name="2631"></a>2631</td><td></td><td></td><td></td><td></td><td class="s">            ($val,$isdst) = @val;</td></tr>
<tr><td class="h"><a name="2632"></a>2632</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2633"></a>2633</td><td></td><td></td><td></td><td></td><td class="s">            $err = 1;</td></tr>
<tr><td class="h"><a name="2634"></a>2634</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2635"></a>2635</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2636"></a>2636</td><td></td><td></td><td></td><td></td><td class="s">         $$date[$i] = $val;</td></tr>
<tr><td class="h"><a name="2637"></a>2637</td><td></td><td></td><td></td><td></td><td class="s">         $def[$i]   = 0  if ($def[$i]);</td></tr>
<tr><td class="h"><a name="2638"></a>2638</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2639"></a>2639</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2640"></a>2640</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2641"></a>2641</td><td></td><td></td><td></td><td></td><td class="s">         $err = 2;</td></tr>
<tr><td class="h"><a name="2642"></a>2642</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2643"></a>2643</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2644"></a>2644</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2645"></a>2645</td><td class="c0">2430</td><td class="c3"><span title="Avg 82ns">200µs</span></td><td></td><td></td><td class="s">      if ($err) {</td></tr>
<tr><td class="h"><a name="2646"></a>2646</td><td></td><td></td><td></td><td></td><td class="s">         if ($err == 1) {</td></tr>
<tr><td class="h"><a name="2647"></a>2647</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = '[set] Invalid arguments';</td></tr>
<tr><td class="h"><a name="2648"></a>2648</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2649"></a>2649</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = '[set] Invalid field';</td></tr>
<tr><td class="h"><a name="2650"></a>2650</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2651"></a>2651</td><td></td><td></td><td></td><td></td><td class="s">         return 1;</td></tr>
<tr><td class="h"><a name="2652"></a>2652</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2653"></a>2653</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2654"></a>2654</td><td></td><td></td><td></td><td></td><td class="s">      # Handle the arguments (it can be a zone or an offset)</td></tr>
<tr><td class="h"><a name="2655"></a>2655</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2656"></a>2656</td><td class="c0">2430</td><td class="c1"><span title="Avg 172ns">418µs</span></td><td></td><td></td><td class="s">      if ($new_tz) {</td></tr>
<tr><td class="h"><a name="2657"></a>2657</td><td class="c0">2430</td><td class="c0"><span title="Avg 598ns">1.45ms</span></td><td class="c0">2430</td><td class="c3">3.30ms</td><td class="s">         my $tmp = $dmt-&gt;_zone($new_tz);<div class="calls"><div class="calls_out">         # spent  3.30ms making 2430 calls to <a href="Date-Manip-TZ-pm-39-line.html#195">Date::Manip::TZ::_zone</a>, avg 1µs/call</div></div></td></tr>
<tr><td class="h"><a name="2658"></a>2658</td><td class="c0">2430</td><td class="c0"><span title="Avg 267ns">648µs</span></td><td></td><td></td><td class="s">         if ($tmp) {</td></tr>
<tr><td class="h"><a name="2659"></a>2659</td><td></td><td></td><td></td><td></td><td class="s">            # A zone/alias</td></tr>
<tr><td class="h"><a name="2660"></a>2660</td><td></td><td></td><td></td><td></td><td class="s">            $tz = $tmp;</td></tr>
<tr><td class="h"><a name="2661"></a>2661</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2662"></a>2662</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2663"></a>2663</td><td></td><td></td><td></td><td></td><td class="s">            # An offset</td></tr>
<tr><td class="h"><a name="2664"></a>2664</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2665"></a>2665</td><td></td><td></td><td></td><td></td><td class="s">            my $dstflag = '';</td></tr>
<tr><td class="h"><a name="2666"></a>2666</td><td></td><td></td><td></td><td></td><td class="s">            $dstflag    = ($isdst ? 'dstonly' : 'stdonly')  if (defined $isdst);</td></tr>
<tr><td class="h"><a name="2667"></a>2667</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2668"></a>2668</td><td></td><td></td><td></td><td></td><td class="s">            $tz = $dmb-&gt;__zone($date,lc($new_tz),'',$dstflag);</td></tr>
<tr><td class="h"><a name="2669"></a>2669</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2670"></a>2670</td><td></td><td></td><td></td><td></td><td class="s">            if (! $tz) {</td></tr>
<tr><td class="h"><a name="2671"></a>2671</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'err'} = &quot;[set] Invalid timezone argument: $new_tz&quot;;</td></tr>
<tr><td class="h"><a name="2672"></a>2672</td><td></td><td></td><td></td><td></td><td class="s">               return 1;</td></tr>
<tr><td class="h"><a name="2673"></a>2673</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2674"></a>2674</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2675"></a>2675</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2676"></a>2676</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2677"></a>2677</td><td class="c0">2430</td><td class="c0"><span title="Avg 273ns">665µs</span></td><td></td><td></td><td class="s">      if ($new_date) {</td></tr>
<tr><td class="h"><a name="2678"></a>2678</td><td class="c0">2430</td><td class="c0"><span title="Avg 784ns">1.91ms</span></td><td class="c0">2430</td><td class="c0">27.5ms</td><td class="s">         if ($dmb-&gt;check($new_date)) {<div class="calls"><div class="calls_out">         # spent  27.5ms making 2430 calls to <a href="Date-Manip-Base-pm-29-line.html#609">Date::Manip::Base::check</a>, avg 11µs/call</div></div></td></tr>
<tr><td class="h"><a name="2679"></a>2679</td><td></td><td></td><td></td><td></td><td class="s">            $date = $new_date;</td></tr>
<tr><td class="h"><a name="2680"></a>2680</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2681"></a>2681</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = '[set] Invalid date argument';</td></tr>
<tr><td class="h"><a name="2682"></a>2682</td><td></td><td></td><td></td><td></td><td class="s">            return 1;</td></tr>
<tr><td class="h"><a name="2683"></a>2683</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2684"></a>2684</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2685"></a>2685</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2686"></a>2686</td><td class="c0">2430</td><td class="c3"><span title="Avg 83ns">201µs</span></td><td></td><td></td><td class="s">      if ($new_time) {</td></tr>
<tr><td class="h"><a name="2687"></a>2687</td><td></td><td></td><td></td><td></td><td class="s">         if ($dmb-&gt;check_time($new_time)) {</td></tr>
<tr><td class="h"><a name="2688"></a>2688</td><td></td><td></td><td></td><td></td><td class="s">            $$date[3] = $$new_time[0];</td></tr>
<tr><td class="h"><a name="2689"></a>2689</td><td></td><td></td><td></td><td></td><td class="s">            $$date[4] = $$new_time[1];</td></tr>
<tr><td class="h"><a name="2690"></a>2690</td><td></td><td></td><td></td><td></td><td class="s">            $$date[5] = $$new_time[2];</td></tr>
<tr><td class="h"><a name="2691"></a>2691</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2692"></a>2692</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'}     = '[set] Invalid time argument';</td></tr>
<tr><td class="h"><a name="2693"></a>2693</td><td></td><td></td><td></td><td></td><td class="s">            return 1;</td></tr>
<tr><td class="h"><a name="2694"></a>2694</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2695"></a>2695</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2696"></a>2696</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2697"></a>2697</td><td></td><td></td><td></td><td></td><td class="s">      # Check the date/timezone combination</td></tr>
<tr><td class="h"><a name="2698"></a>2698</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2699"></a>2699</td><td class="c0">2430</td><td class="c3"><span title="Avg 102ns">248µs</span></td><td></td><td></td><td class="s">      my($abb,$off);</td></tr>
<tr><td class="h"><a name="2700"></a>2700</td><td class="c0">2430</td><td class="c1"><span title="Avg 212ns">515µs</span></td><td></td><td></td><td class="s">      if ($tz eq 'etc/gmt') {</td></tr>
<tr><td class="h"><a name="2701"></a>2701</td><td class="c3">2</td><td class="c3"><span title="Avg 150ns">300ns</span></td><td></td><td></td><td class="s">         $abb                 = 'GMT';</td></tr>
<tr><td class="h"><a name="2702"></a>2702</td><td class="c3">2</td><td class="c3"><span title="Avg 550ns">1µs</span></td><td></td><td></td><td class="s">         $off                 = [0,0,0];</td></tr>
<tr><td class="h"><a name="2703"></a>2703</td><td class="c3">2</td><td class="c3"><span title="Avg 150ns">300ns</span></td><td></td><td></td><td class="s">         $isdst               = 0;</td></tr>
<tr><td class="h"><a name="2704"></a>2704</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2705"></a>2705</td><td class="c0">2428</td><td class="c0"><span title="Avg 683ns">1.66ms</span></td><td class="c0">2428</td><td class="c0">39.8ms</td><td class="s">         my $per              = $dmt-&gt;date_period($date,$tz,1,$isdst);<div class="calls"><div class="calls_out">         # spent  39.8ms making 2428 calls to <a href="Date-Manip-TZ-pm-39-line.html#1213">Date::Manip::TZ::date_period</a>, avg 16µs/call</div></div></td></tr>
<tr><td class="h"><a name="2706"></a>2706</td><td class="c0">2428</td><td class="c3"><span title="Avg 104ns">254µs</span></td><td></td><td></td><td class="s">         if (! $per) {</td></tr>
<tr><td class="h"><a name="2707"></a>2707</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = '[set] Invalid date/timezone';</td></tr>
<tr><td class="h"><a name="2708"></a>2708</td><td></td><td></td><td></td><td></td><td class="s">            return 1;</td></tr>
<tr><td class="h"><a name="2709"></a>2709</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2710"></a>2710</td><td class="c0">2428</td><td class="c2"><span title="Avg 156ns">380µs</span></td><td></td><td></td><td class="s">         $isdst               = $$per[5];</td></tr>
<tr><td class="h"><a name="2711"></a>2711</td><td class="c0">2428</td><td class="c2"><span title="Avg 139ns">338µs</span></td><td></td><td></td><td class="s">         $abb                 = $$per[4];</td></tr>
<tr><td class="h"><a name="2712"></a>2712</td><td class="c0">2428</td><td class="c1"><span title="Avg 229ns">557µs</span></td><td></td><td></td><td class="s">         $off                 = $$per[3];</td></tr>
<tr><td class="h"><a name="2713"></a>2713</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2714"></a>2714</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2715"></a>2715</td><td></td><td></td><td></td><td></td><td class="s">      # Set the information</td></tr>
<tr><td class="h"><a name="2716"></a>2716</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2717"></a>2717</td><td class="c0">2430</td><td class="c0"><span title="Avg 284ns">691µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'set'}   = 1;</td></tr>
<tr><td class="h"><a name="2718"></a>2718</td><td class="c0">2430</td><td class="c0"><span title="Avg 295ns">717µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'date'}  = $date;</td></tr>
<tr><td class="h"><a name="2719"></a>2719</td><td class="c0">2430</td><td class="c1"><span title="Avg 232ns">563µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'tz'}    = $tz;</td></tr>
<tr><td class="h"><a name="2720"></a>2720</td><td class="c0">2430</td><td class="c0"><span title="Avg 313ns">759µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'isdst'} = $isdst;</td></tr>
<tr><td class="h"><a name="2721"></a>2721</td><td class="c0">2430</td><td class="c1"><span title="Avg 195ns">474µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'offset'}= $off;</td></tr>
<tr><td class="h"><a name="2722"></a>2722</td><td class="c0">2430</td><td class="c1"><span title="Avg 186ns">453µs</span></td><td></td><td></td><td class="s">      $$self{'data'}{'abb'}   = $abb;</td></tr>
<tr><td class="h"><a name="2723"></a>2723</td><td class="c0">2430</td><td class="c0"><span title="Avg 731ns">1.78ms</span></td><td></td><td></td><td class="s">      $$self{'data'}{'def'}   = [ @def ];</td></tr>
<tr><td class="h"><a name="2724"></a>2724</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2725"></a>2725</td><td class="c0">2430</td><td class="c0"><span title="Avg 2µs">3.82ms</span></td><td></td><td></td><td class="s">      return 0;</td></tr>
<tr><td class="h"><a name="2726"></a>2726</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2727"></a>2727</td><td class="c3">1</td><td class="c0"><span title="Avg 864µs">864µs</span></td><td class="c3">1</td><td class="c3">6µs</td><td class="s">}<div class="calls"><div class="calls_out"># spent     6µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#2507">Date::Manip::Date::BEGIN@2507</a></div></div></td></tr>
<tr><td class="h"><a name="2728"></a>2728</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2729"></a>2729</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="2730"></a>2730</td><td></td><td></td><td></td><td></td><td class="s"># NEXT/PREV METHODS</td></tr>
<tr><td class="h"><a name="2731"></a>2731</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2732"></a>2732</td><td></td><td></td><td></td><td></td><td class="s">sub prev {</td></tr>
<tr><td class="h"><a name="2733"></a>2733</td><td></td><td></td><td></td><td></td><td class="s">   my($self,@args) = @_;</td></tr>
<tr><td class="h"><a name="2734"></a>2734</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if ($$self{'err'}  ||  ! $$self{'data'}{'set'});</td></tr>
<tr><td class="h"><a name="2735"></a>2735</td><td></td><td></td><td></td><td></td><td class="s">   my $date        = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2736"></a>2736</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2737"></a>2737</td><td></td><td></td><td></td><td></td><td class="s">   $date           = $self-&gt;__next_prev($date,0,@args);</td></tr>
<tr><td class="h"><a name="2738"></a>2738</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2739"></a>2739</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if (! defined($date));</td></tr>
<tr><td class="h"><a name="2740"></a>2740</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="2741"></a>2741</td><td></td><td></td><td></td><td></td><td class="s">   return 0;</td></tr>
<tr><td class="h"><a name="2742"></a>2742</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2743"></a>2743</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2744"></a>2744</td><td></td><td></td><td></td><td></td><td class="s">sub next {</td></tr>
<tr><td class="h"><a name="2745"></a>2745</td><td></td><td></td><td></td><td></td><td class="s">   my($self,@args) = @_;</td></tr>
<tr><td class="h"><a name="2746"></a>2746</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if ($$self{'err'}  ||  ! $$self{'data'}{'set'});</td></tr>
<tr><td class="h"><a name="2747"></a>2747</td><td></td><td></td><td></td><td></td><td class="s">   my $date        = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="2748"></a>2748</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2749"></a>2749</td><td></td><td></td><td></td><td></td><td class="s">   $date           = $self-&gt;__next_prev($date,1,@args);</td></tr>
<tr><td class="h"><a name="2750"></a>2750</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2751"></a>2751</td><td></td><td></td><td></td><td></td><td class="s">   return 1  if (! defined($date));</td></tr>
<tr><td class="h"><a name="2752"></a>2752</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="2753"></a>2753</td><td></td><td></td><td></td><td></td><td class="s">   return 0;</td></tr>
<tr><td class="h"><a name="2754"></a>2754</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2755"></a>2755</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2756"></a>2756</td><td></td><td></td><td></td><td></td><td class="s">sub __next_prev {</td></tr>
<tr><td class="h"><a name="2757"></a>2757</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$next,$dow,$curr,$time) = @_;</td></tr>
<tr><td class="h"><a name="2758"></a>2758</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2759"></a>2759</td><td></td><td></td><td></td><td></td><td class="s">   my ($caller,$sign,$prev);</td></tr>
<tr><td class="h"><a name="2760"></a>2760</td><td></td><td></td><td></td><td></td><td class="s">   if ($next) {</td></tr>
<tr><td class="h"><a name="2761"></a>2761</td><td></td><td></td><td></td><td></td><td class="s">      $caller = 'next';</td></tr>
<tr><td class="h"><a name="2762"></a>2762</td><td></td><td></td><td></td><td></td><td class="s">      $sign   = 1;</td></tr>
<tr><td class="h"><a name="2763"></a>2763</td><td></td><td></td><td></td><td></td><td class="s">      $prev   = 0;</td></tr>
<tr><td class="h"><a name="2764"></a>2764</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2765"></a>2765</td><td></td><td></td><td></td><td></td><td class="s">      $caller = 'prev';</td></tr>
<tr><td class="h"><a name="2766"></a>2766</td><td></td><td></td><td></td><td></td><td class="s">      $sign   = -1;</td></tr>
<tr><td class="h"><a name="2767"></a>2767</td><td></td><td></td><td></td><td></td><td class="s">      $prev   = 1;</td></tr>
<tr><td class="h"><a name="2768"></a>2768</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2769"></a>2769</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2770"></a>2770</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="2771"></a>2771</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="2772"></a>2772</td><td></td><td></td><td></td><td></td><td class="s">   my $orig = [ @$date ];</td></tr>
<tr><td class="h"><a name="2773"></a>2773</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2774"></a>2774</td><td></td><td></td><td></td><td></td><td class="s">   # Check the time (if any)</td></tr>
<tr><td class="h"><a name="2775"></a>2775</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2776"></a>2776</td><td></td><td></td><td></td><td></td><td class="s">   if (defined($time)) {</td></tr>
<tr><td class="h"><a name="2777"></a>2777</td><td></td><td></td><td></td><td></td><td class="s">      if ($dow) {</td></tr>
<tr><td class="h"><a name="2778"></a>2778</td><td></td><td></td><td></td><td></td><td class="s">         # $time will refer to a full [H,MN,S]</td></tr>
<tr><td class="h"><a name="2779"></a>2779</td><td></td><td></td><td></td><td></td><td class="s">         my($err,$h,$mn,$s) = $dmb-&gt;_hms_fields({ 'out' =&gt; 'list' },$time);</td></tr>
<tr><td class="h"><a name="2780"></a>2780</td><td></td><td></td><td></td><td></td><td class="s">         if ($err) {</td></tr>
<tr><td class="h"><a name="2781"></a>2781</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = &quot;[$caller] invalid time argument&quot;;</td></tr>
<tr><td class="h"><a name="2782"></a>2782</td><td></td><td></td><td></td><td></td><td class="s">            return undef;</td></tr>
<tr><td class="h"><a name="2783"></a>2783</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2784"></a>2784</td><td></td><td></td><td></td><td></td><td class="s">         $time = [$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="2785"></a>2785</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2786"></a>2786</td><td></td><td></td><td></td><td></td><td class="s">         # $time may have leading undefs</td></tr>
<tr><td class="h"><a name="2787"></a>2787</td><td></td><td></td><td></td><td></td><td class="s">         my @tmp = @$time;</td></tr>
<tr><td class="h"><a name="2788"></a>2788</td><td></td><td></td><td></td><td></td><td class="s">         if ($#tmp != 2) {</td></tr>
<tr><td class="h"><a name="2789"></a>2789</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'err'} = &quot;[$caller] invalid time argument&quot;;</td></tr>
<tr><td class="h"><a name="2790"></a>2790</td><td></td><td></td><td></td><td></td><td class="s">            return undef;</td></tr>
<tr><td class="h"><a name="2791"></a>2791</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2792"></a>2792</td><td></td><td></td><td></td><td></td><td class="s">         my($h,$mn,$s) = @$time;</td></tr>
<tr><td class="h"><a name="2793"></a>2793</td><td></td><td></td><td></td><td></td><td class="s">         if (defined($h)) {</td></tr>
<tr><td class="h"><a name="2794"></a>2794</td><td></td><td></td><td></td><td></td><td class="s">            $mn = 0  if (! defined($mn));</td></tr>
<tr><td class="h"><a name="2795"></a>2795</td><td></td><td></td><td></td><td></td><td class="s">            $s  = 0  if (! defined($s));</td></tr>
<tr><td class="h"><a name="2796"></a>2796</td><td></td><td></td><td></td><td></td><td class="s">         } elsif (defined($mn)) {</td></tr>
<tr><td class="h"><a name="2797"></a>2797</td><td></td><td></td><td></td><td></td><td class="s">            $s  = 0  if (! defined($s));</td></tr>
<tr><td class="h"><a name="2798"></a>2798</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2799"></a>2799</td><td></td><td></td><td></td><td></td><td class="s">            $s  = 0  if (! defined($s));</td></tr>
<tr><td class="h"><a name="2800"></a>2800</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2801"></a>2801</td><td></td><td></td><td></td><td></td><td class="s">         $time = [$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="2802"></a>2802</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2803"></a>2803</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2804"></a>2804</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2805"></a>2805</td><td></td><td></td><td></td><td></td><td class="s">   # Find the next DoW</td></tr>
<tr><td class="h"><a name="2806"></a>2806</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2807"></a>2807</td><td></td><td></td><td></td><td></td><td class="s">   if ($dow) {</td></tr>
<tr><td class="h"><a name="2808"></a>2808</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2809"></a>2809</td><td></td><td></td><td></td><td></td><td class="s">      if (! $dmb-&gt;_is_int($dow,1,7)) {</td></tr>
<tr><td class="h"><a name="2810"></a>2810</td><td></td><td></td><td></td><td></td><td class="s">         $$self{'err'} = &quot;[$caller] Invalid DOW: $dow&quot;;</td></tr>
<tr><td class="h"><a name="2811"></a>2811</td><td></td><td></td><td></td><td></td><td class="s">         return undef;</td></tr>
<tr><td class="h"><a name="2812"></a>2812</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2813"></a>2813</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2814"></a>2814</td><td></td><td></td><td></td><td></td><td class="s">      # Find the next/previous occurrence of DoW</td></tr>
<tr><td class="h"><a name="2815"></a>2815</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2816"></a>2816</td><td></td><td></td><td></td><td></td><td class="s">      my $curr_dow = $dmb-&gt;day_of_week($date);</td></tr>
<tr><td class="h"><a name="2817"></a>2817</td><td></td><td></td><td></td><td></td><td class="s">      my $adjust   = 0;</td></tr>
<tr><td class="h"><a name="2818"></a>2818</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2819"></a>2819</td><td></td><td></td><td></td><td></td><td class="s">      if ($dow == $curr_dow) {</td></tr>
<tr><td class="h"><a name="2820"></a>2820</td><td></td><td></td><td></td><td></td><td class="s">         $adjust = 1  if ($curr == 0);</td></tr>
<tr><td class="h"><a name="2821"></a>2821</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2822"></a>2822</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2823"></a>2823</td><td></td><td></td><td></td><td></td><td class="s">         my $num;</td></tr>
<tr><td class="h"><a name="2824"></a>2824</td><td></td><td></td><td></td><td></td><td class="s">         if ($next) {</td></tr>
<tr><td class="h"><a name="2825"></a>2825</td><td></td><td></td><td></td><td></td><td class="s">            # force $dow to be more than $curr_dow</td></tr>
<tr><td class="h"><a name="2826"></a>2826</td><td></td><td></td><td></td><td></td><td class="s">            $dow += 7  if ($dow&lt;$curr_dow);</td></tr>
<tr><td class="h"><a name="2827"></a>2827</td><td></td><td></td><td></td><td></td><td class="s">            $num  = $dow - $curr_dow;</td></tr>
<tr><td class="h"><a name="2828"></a>2828</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2829"></a>2829</td><td></td><td></td><td></td><td></td><td class="s">            # force $dow to be less than $curr_dow</td></tr>
<tr><td class="h"><a name="2830"></a>2830</td><td></td><td></td><td></td><td></td><td class="s">            $dow -= 7  if ($dow&gt;$curr_dow);</td></tr>
<tr><td class="h"><a name="2831"></a>2831</td><td></td><td></td><td></td><td></td><td class="s">            $num  = $curr_dow - $dow;</td></tr>
<tr><td class="h"><a name="2832"></a>2832</td><td></td><td></td><td></td><td></td><td class="s">            $num *= -1;</td></tr>
<tr><td class="h"><a name="2833"></a>2833</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2834"></a>2834</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2835"></a>2835</td><td></td><td></td><td></td><td></td><td class="s">         # Add/subtract $num days</td></tr>
<tr><td class="h"><a name="2836"></a>2836</td><td></td><td></td><td></td><td></td><td class="s">         $date = $dmb-&gt;calc_date_days($date,$num);</td></tr>
<tr><td class="h"><a name="2837"></a>2837</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2838"></a>2838</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2839"></a>2839</td><td></td><td></td><td></td><td></td><td class="s">      if (defined($time)) {</td></tr>
<tr><td class="h"><a name="2840"></a>2840</td><td></td><td></td><td></td><td></td><td class="s">         my ($y,$m,$d,$h,$mn,$s) = @$date;</td></tr>
<tr><td class="h"><a name="2841"></a>2841</td><td></td><td></td><td></td><td></td><td class="s">         ($h,$mn,$s)             = @$time;</td></tr>
<tr><td class="h"><a name="2842"></a>2842</td><td></td><td></td><td></td><td></td><td class="s">         $date = [$y,$m,$d,$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="2843"></a>2843</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2844"></a>2844</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2845"></a>2845</td><td></td><td></td><td></td><td></td><td class="s">      my $cmp = $dmb-&gt;cmp($orig,$date);</td></tr>
<tr><td class="h"><a name="2846"></a>2846</td><td></td><td></td><td></td><td></td><td class="s">      $adjust = 1  if ($curr == 2  &amp;&amp;  $cmp != -1*$sign);</td></tr>
<tr><td class="h"><a name="2847"></a>2847</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2848"></a>2848</td><td></td><td></td><td></td><td></td><td class="s">      if ($adjust) {</td></tr>
<tr><td class="h"><a name="2849"></a>2849</td><td></td><td></td><td></td><td></td><td class="s">         # Add/subtract 1 week</td></tr>
<tr><td class="h"><a name="2850"></a>2850</td><td></td><td></td><td></td><td></td><td class="s">         $date = $dmb-&gt;calc_date_days($date,$sign*7);</td></tr>
<tr><td class="h"><a name="2851"></a>2851</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2852"></a>2852</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2853"></a>2853</td><td></td><td></td><td></td><td></td><td class="s">      return $date;</td></tr>
<tr><td class="h"><a name="2854"></a>2854</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2855"></a>2855</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2856"></a>2856</td><td></td><td></td><td></td><td></td><td class="s">   # Find the next Time</td></tr>
<tr><td class="h"><a name="2857"></a>2857</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2858"></a>2858</td><td></td><td></td><td></td><td></td><td class="s">   if (defined($time)) {</td></tr>
<tr><td class="h"><a name="2859"></a>2859</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2860"></a>2860</td><td></td><td></td><td></td><td></td><td class="s">      my ($h,$mn,$s)    = @$time;</td></tr>
<tr><td class="h"><a name="2861"></a>2861</td><td></td><td></td><td></td><td></td><td class="s">      my $orig          = [ @$date ];</td></tr>
<tr><td class="h"><a name="2862"></a>2862</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2863"></a>2863</td><td></td><td></td><td></td><td></td><td class="s">      my $cmp;</td></tr>
<tr><td class="h"><a name="2864"></a>2864</td><td></td><td></td><td></td><td></td><td class="s">      if (defined $h) {</td></tr>
<tr><td class="h"><a name="2865"></a>2865</td><td></td><td></td><td></td><td></td><td class="s">         # Find next/prev HH:MN:SS</td></tr>
<tr><td class="h"><a name="2866"></a>2866</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2867"></a>2867</td><td></td><td></td><td></td><td></td><td class="s">         @$date[3..5]   = @$time;</td></tr>
<tr><td class="h"><a name="2868"></a>2868</td><td></td><td></td><td></td><td></td><td class="s">         $cmp           = $dmb-&gt;cmp($orig,$date);</td></tr>
<tr><td class="h"><a name="2869"></a>2869</td><td></td><td></td><td></td><td></td><td class="s">         if ($cmp == -1) {</td></tr>
<tr><td class="h"><a name="2870"></a>2870</td><td></td><td></td><td></td><td></td><td class="s">            if ($prev) {</td></tr>
<tr><td class="h"><a name="2871"></a>2871</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_days($date,-1);</td></tr>
<tr><td class="h"><a name="2872"></a>2872</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2873"></a>2873</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($cmp == 1) {</td></tr>
<tr><td class="h"><a name="2874"></a>2874</td><td></td><td></td><td></td><td></td><td class="s">            if ($next) {</td></tr>
<tr><td class="h"><a name="2875"></a>2875</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_days($date,1);</td></tr>
<tr><td class="h"><a name="2876"></a>2876</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2877"></a>2877</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2878"></a>2878</td><td></td><td></td><td></td><td></td><td class="s">            if (! $curr) {</td></tr>
<tr><td class="h"><a name="2879"></a>2879</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_days($date,$sign);</td></tr>
<tr><td class="h"><a name="2880"></a>2880</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2881"></a>2881</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2882"></a>2882</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2883"></a>2883</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (defined $mn) {</td></tr>
<tr><td class="h"><a name="2884"></a>2884</td><td></td><td></td><td></td><td></td><td class="s">         # Find next/prev MN:SS</td></tr>
<tr><td class="h"><a name="2885"></a>2885</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2886"></a>2886</td><td></td><td></td><td></td><td></td><td class="s">         @$date[4..5]   = @$time[1..2];</td></tr>
<tr><td class="h"><a name="2887"></a>2887</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2888"></a>2888</td><td></td><td></td><td></td><td></td><td class="s">         $cmp           = $dmb-&gt;cmp($orig,$date);</td></tr>
<tr><td class="h"><a name="2889"></a>2889</td><td></td><td></td><td></td><td></td><td class="s">         if ($cmp == -1) {</td></tr>
<tr><td class="h"><a name="2890"></a>2890</td><td></td><td></td><td></td><td></td><td class="s">            if ($prev) {</td></tr>
<tr><td class="h"><a name="2891"></a>2891</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[-1,0,0]);</td></tr>
<tr><td class="h"><a name="2892"></a>2892</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2893"></a>2893</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($cmp == 1) {</td></tr>
<tr><td class="h"><a name="2894"></a>2894</td><td></td><td></td><td></td><td></td><td class="s">            if ($next) {</td></tr>
<tr><td class="h"><a name="2895"></a>2895</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[1,0,0]);</td></tr>
<tr><td class="h"><a name="2896"></a>2896</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2897"></a>2897</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2898"></a>2898</td><td></td><td></td><td></td><td></td><td class="s">            if (! $curr) {</td></tr>
<tr><td class="h"><a name="2899"></a>2899</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[$sign,0,0]);</td></tr>
<tr><td class="h"><a name="2900"></a>2900</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2901"></a>2901</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2902"></a>2902</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2903"></a>2903</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2904"></a>2904</td><td></td><td></td><td></td><td></td><td class="s">         # Find next/prev SS</td></tr>
<tr><td class="h"><a name="2905"></a>2905</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2906"></a>2906</td><td></td><td></td><td></td><td></td><td class="s">         $$date[5]      = $$time[2];</td></tr>
<tr><td class="h"><a name="2907"></a>2907</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2908"></a>2908</td><td></td><td></td><td></td><td></td><td class="s">         $cmp           = $dmb-&gt;cmp($orig,$date);</td></tr>
<tr><td class="h"><a name="2909"></a>2909</td><td></td><td></td><td></td><td></td><td class="s">         if ($cmp == -1) {</td></tr>
<tr><td class="h"><a name="2910"></a>2910</td><td></td><td></td><td></td><td></td><td class="s">            if ($prev) {</td></tr>
<tr><td class="h"><a name="2911"></a>2911</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[0,-1,0]);</td></tr>
<tr><td class="h"><a name="2912"></a>2912</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2913"></a>2913</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($cmp == 1) {</td></tr>
<tr><td class="h"><a name="2914"></a>2914</td><td></td><td></td><td></td><td></td><td class="s">            if ($next) {</td></tr>
<tr><td class="h"><a name="2915"></a>2915</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[0,1,0]);</td></tr>
<tr><td class="h"><a name="2916"></a>2916</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2917"></a>2917</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="2918"></a>2918</td><td></td><td></td><td></td><td></td><td class="s">            if (! $curr) {</td></tr>
<tr><td class="h"><a name="2919"></a>2919</td><td></td><td></td><td></td><td></td><td class="s">               $date    = $dmb-&gt;calc_date_time($date,[0,$sign,0]);</td></tr>
<tr><td class="h"><a name="2920"></a>2920</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="2921"></a>2921</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="2922"></a>2922</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2923"></a>2923</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2924"></a>2924</td><td></td><td></td><td></td><td></td><td class="s">      return $date;</td></tr>
<tr><td class="h"><a name="2925"></a>2925</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2926"></a>2926</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2927"></a>2927</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'err'} = &quot;[$caller] Either DoW or time (or both) required&quot;;</td></tr>
<tr><td class="h"><a name="2928"></a>2928</td><td></td><td></td><td></td><td></td><td class="s">   return undef;</td></tr>
<tr><td class="h"><a name="2929"></a>2929</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2930"></a>2930</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2931"></a>2931</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="2932"></a>2932</td><td></td><td></td><td></td><td></td><td class="s"># CALC METHOD</td></tr>
<tr><td class="h"><a name="2933"></a>2933</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2934"></a>2934</td><td></td><td></td><td></td><td></td><td class="s">sub calc {</td></tr>
<tr><td class="h"><a name="2935"></a>2935</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$obj,@args) = @_;</td></tr>
<tr><td class="h"><a name="2936"></a>2936</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2937"></a>2937</td><td></td><td></td><td></td><td></td><td class="s">   if (ref($obj) eq 'Date::Manip::Date') {</td></tr>
<tr><td class="h"><a name="2938"></a>2938</td><td></td><td></td><td></td><td></td><td class="s">      return $self-&gt;_calc_date_date($obj,@args);</td></tr>
<tr><td class="h"><a name="2939"></a>2939</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2940"></a>2940</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (ref($obj) eq 'Date::Manip::Delta') {</td></tr>
<tr><td class="h"><a name="2941"></a>2941</td><td></td><td></td><td></td><td></td><td class="s">      return $self-&gt;_calc_date_delta($obj,@args);</td></tr>
<tr><td class="h"><a name="2942"></a>2942</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2943"></a>2943</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2944"></a>2944</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="2945"></a>2945</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2946"></a>2946</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="2947"></a>2947</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2948"></a>2948</td><td></td><td></td><td></td><td></td><td class="s">sub _calc_date_date {</td></tr>
<tr><td class="h"><a name="2949"></a>2949</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,@args) = @_;</td></tr>
<tr><td class="h"><a name="2950"></a>2950</td><td></td><td></td><td></td><td></td><td class="s">   my $ret               = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="2951"></a>2951</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2952"></a>2952</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="2953"></a>2953</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] First object invalid (date)';</td></tr>
<tr><td class="h"><a name="2954"></a>2954</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="2955"></a>2955</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2956"></a>2956</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2957"></a>2957</td><td></td><td></td><td></td><td></td><td class="s">   if ($$date{'err'}  ||  ! $$date{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="2958"></a>2958</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Second object invalid (date)';</td></tr>
<tr><td class="h"><a name="2959"></a>2959</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="2960"></a>2960</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2961"></a>2961</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2962"></a>2962</td><td></td><td></td><td></td><td></td><td class="s">   # Handle subtract/mode arguments</td></tr>
<tr><td class="h"><a name="2963"></a>2963</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2964"></a>2964</td><td></td><td></td><td></td><td></td><td class="s">   my($subtract,$mode);</td></tr>
<tr><td class="h"><a name="2965"></a>2965</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2966"></a>2966</td><td></td><td></td><td></td><td></td><td class="s">   if ($#args == -1) {</td></tr>
<tr><td class="h"><a name="2967"></a>2967</td><td></td><td></td><td></td><td></td><td class="s">      ($subtract,$mode) = (0,'');</td></tr>
<tr><td class="h"><a name="2968"></a>2968</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($#args == 0) {</td></tr>
<tr><td class="h"><a name="2969"></a>2969</td><td></td><td></td><td></td><td></td><td class="s">      if ($args[0] eq '0'  ||  $args[0] eq '1') {</td></tr>
<tr><td class="h"><a name="2970"></a>2970</td><td></td><td></td><td></td><td></td><td class="s">         ($subtract,$mode) = ($args[0],'');</td></tr>
<tr><td class="h"><a name="2971"></a>2971</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="2972"></a>2972</td><td></td><td></td><td></td><td></td><td class="s">         ($subtract,$mode) = (0,$args[0]);</td></tr>
<tr><td class="h"><a name="2973"></a>2973</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="2974"></a>2974</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2975"></a>2975</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($#args == 1) {</td></tr>
<tr><td class="h"><a name="2976"></a>2976</td><td></td><td></td><td></td><td></td><td class="s">      ($subtract,$mode) = @args;</td></tr>
<tr><td class="h"><a name="2977"></a>2977</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="2978"></a>2978</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Invalid arguments';</td></tr>
<tr><td class="h"><a name="2979"></a>2979</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="2980"></a>2980</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2981"></a>2981</td><td></td><td></td><td></td><td></td><td class="s">   $mode   = 'exact'  if (! $mode);</td></tr>
<tr><td class="h"><a name="2982"></a>2982</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2983"></a>2983</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode !~ /^(business|bsemi|bapprox|approx|semi|exact)$/i) {</td></tr>
<tr><td class="h"><a name="2984"></a>2984</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Invalid mode argument';</td></tr>
<tr><td class="h"><a name="2985"></a>2985</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="2986"></a>2986</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="2987"></a>2987</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2988"></a>2988</td><td></td><td></td><td></td><td></td><td class="s">   # if business mode</td></tr>
<tr><td class="h"><a name="2989"></a>2989</td><td></td><td></td><td></td><td></td><td class="s">   #    dates must be in the same timezone</td></tr>
<tr><td class="h"><a name="2990"></a>2990</td><td></td><td></td><td></td><td></td><td class="s">   #    use dates in that zone</td></tr>
<tr><td class="h"><a name="2991"></a>2991</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2992"></a>2992</td><td></td><td></td><td></td><td></td><td class="s">   # otherwise if both dates are in the same timezone  &amp;&amp;  approx/semi mode</td></tr>
<tr><td class="h"><a name="2993"></a>2993</td><td></td><td></td><td></td><td></td><td class="s">   #    use the dates in that zone</td></tr>
<tr><td class="h"><a name="2994"></a>2994</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="2995"></a>2995</td><td></td><td></td><td></td><td></td><td class="s">   # otherwise</td></tr>
<tr><td class="h"><a name="2996"></a>2996</td><td></td><td></td><td></td><td></td><td class="s">   #    convert to gmt</td></tr>
<tr><td class="h"><a name="2997"></a>2997</td><td></td><td></td><td></td><td></td><td class="s">   #    use those dates</td></tr>
<tr><td class="h"><a name="2998"></a>2998</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="2999"></a>2999</td><td></td><td></td><td></td><td></td><td class="s">   my($date1,$date2,$tz1,$isdst1,$tz2,$isdst2);</td></tr>
<tr><td class="h"><a name="3000"></a>3000</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'business'  ||  $mode eq 'bapprox'  ||  $mode eq 'bsemi') {</td></tr>
<tr><td class="h"><a name="3001"></a>3001</td><td></td><td></td><td></td><td></td><td class="s">      if ($$self{'data'}{'tz'} eq $$date{'data'}{'tz'}) {</td></tr>
<tr><td class="h"><a name="3002"></a>3002</td><td></td><td></td><td></td><td></td><td class="s">         $date1  = [ $self-&gt;value() ];</td></tr>
<tr><td class="h"><a name="3003"></a>3003</td><td></td><td></td><td></td><td></td><td class="s">         $date2  = [ $date-&gt;value() ];</td></tr>
<tr><td class="h"><a name="3004"></a>3004</td><td></td><td></td><td></td><td></td><td class="s">         $tz1    = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="3005"></a>3005</td><td></td><td></td><td></td><td></td><td class="s">         $tz2    = $tz1;</td></tr>
<tr><td class="h"><a name="3006"></a>3006</td><td></td><td></td><td></td><td></td><td class="s">         $isdst1 = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3007"></a>3007</td><td></td><td></td><td></td><td></td><td class="s">         $isdst2 = $$date{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3008"></a>3008</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="3009"></a>3009</td><td></td><td></td><td></td><td></td><td class="s">         $$ret{'err'} = '[calc] Dates must be in the same timezone for ' .</td></tr>
<tr><td class="h"><a name="3010"></a>3010</td><td></td><td></td><td></td><td></td><td class="s">           'business mode calculations';</td></tr>
<tr><td class="h"><a name="3011"></a>3011</td><td></td><td></td><td></td><td></td><td class="s">         return $ret;</td></tr>
<tr><td class="h"><a name="3012"></a>3012</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3013"></a>3013</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3014"></a>3014</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (($mode eq 'approx'  ||  $mode eq 'semi')  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3015"></a>3015</td><td></td><td></td><td></td><td></td><td class="s">            $$self{'data'}{'tz'} eq $$date{'data'}{'tz'}) {</td></tr>
<tr><td class="h"><a name="3016"></a>3016</td><td></td><td></td><td></td><td></td><td class="s">      $date1  = [ $self-&gt;value() ];</td></tr>
<tr><td class="h"><a name="3017"></a>3017</td><td></td><td></td><td></td><td></td><td class="s">      $date2  = [ $date-&gt;value() ];</td></tr>
<tr><td class="h"><a name="3018"></a>3018</td><td></td><td></td><td></td><td></td><td class="s">      $tz1    = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="3019"></a>3019</td><td></td><td></td><td></td><td></td><td class="s">      $tz2    = $tz1;</td></tr>
<tr><td class="h"><a name="3020"></a>3020</td><td></td><td></td><td></td><td></td><td class="s">      $isdst1 = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3021"></a>3021</td><td></td><td></td><td></td><td></td><td class="s">      $isdst2 = $$date{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3022"></a>3022</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3023"></a>3023</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3024"></a>3024</td><td></td><td></td><td></td><td></td><td class="s">      $date1 = [ $self-&gt;value('gmt') ];</td></tr>
<tr><td class="h"><a name="3025"></a>3025</td><td></td><td></td><td></td><td></td><td class="s">      $date2 = [ $date-&gt;value('gmt') ];</td></tr>
<tr><td class="h"><a name="3026"></a>3026</td><td></td><td></td><td></td><td></td><td class="s">      $tz1    = 'GMT';</td></tr>
<tr><td class="h"><a name="3027"></a>3027</td><td></td><td></td><td></td><td></td><td class="s">      $tz2    = $tz1;</td></tr>
<tr><td class="h"><a name="3028"></a>3028</td><td></td><td></td><td></td><td></td><td class="s">      $isdst1 = 0;</td></tr>
<tr><td class="h"><a name="3029"></a>3029</td><td></td><td></td><td></td><td></td><td class="s">      $isdst2 = 0;</td></tr>
<tr><td class="h"><a name="3030"></a>3030</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3031"></a>3031</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3032"></a>3032</td><td></td><td></td><td></td><td></td><td class="s">   # Do the calculation</td></tr>
<tr><td class="h"><a name="3033"></a>3033</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3034"></a>3034</td><td></td><td></td><td></td><td></td><td class="s">   my(@delta);</td></tr>
<tr><td class="h"><a name="3035"></a>3035</td><td></td><td></td><td></td><td></td><td class="s">   if ($subtract) {</td></tr>
<tr><td class="h"><a name="3036"></a>3036</td><td></td><td></td><td></td><td></td><td class="s">      if ($mode eq 'business'  ||  $mode eq 'exact'  ||  $subtract == 2) {</td></tr>
<tr><td class="h"><a name="3037"></a>3037</td><td></td><td></td><td></td><td></td><td class="s">         @delta = @{ $self-&gt;__calc_date_date($mode,$date2,$tz2,$isdst2,</td></tr>
<tr><td class="h"><a name="3038"></a>3038</td><td></td><td></td><td></td><td></td><td class="s">                                             $date1,$tz1,$isdst1) };</td></tr>
<tr><td class="h"><a name="3039"></a>3039</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="3040"></a>3040</td><td></td><td></td><td></td><td></td><td class="s">         @delta = @{ $self-&gt;__calc_date_date($mode,$date1,$tz1,$isdst1,</td></tr>
<tr><td class="h"><a name="3041"></a>3041</td><td></td><td></td><td></td><td></td><td class="s">                                             $date2,$tz2,$isdst2) };</td></tr>
<tr><td class="h"><a name="3042"></a>3042</td><td></td><td></td><td></td><td></td><td class="s">         @delta = map { -1*$_ } @delta;</td></tr>
<tr><td class="h"><a name="3043"></a>3043</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3044"></a>3044</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3045"></a>3045</td><td></td><td></td><td></td><td></td><td class="s">      @delta = @{ $self-&gt;__calc_date_date($mode,$date1,$tz1,$isdst1,</td></tr>
<tr><td class="h"><a name="3046"></a>3046</td><td></td><td></td><td></td><td></td><td class="s">                                          $date2,$tz2,$isdst2) };</td></tr>
<tr><td class="h"><a name="3047"></a>3047</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3048"></a>3048</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3049"></a>3049</td><td></td><td></td><td></td><td></td><td class="s">   # Save the delta</td></tr>
<tr><td class="h"><a name="3050"></a>3050</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3051"></a>3051</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'business' || $mode eq 'bapprox' || $mode eq 'bsemi') {</td></tr>
<tr><td class="h"><a name="3052"></a>3052</td><td></td><td></td><td></td><td></td><td class="s">      $ret-&gt;set('business',\@delta);</td></tr>
<tr><td class="h"><a name="3053"></a>3053</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3054"></a>3054</td><td></td><td></td><td></td><td></td><td class="s">      $ret-&gt;set('delta',\@delta);</td></tr>
<tr><td class="h"><a name="3055"></a>3055</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3056"></a>3056</td><td></td><td></td><td></td><td></td><td class="s">   return $ret;</td></tr>
<tr><td class="h"><a name="3057"></a>3057</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3058"></a>3058</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3059"></a>3059</td><td></td><td></td><td></td><td></td><td class="s">sub __calc_date_date {</td></tr>
<tr><td class="h"><a name="3060"></a>3060</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$mode,$date1,$tz1,$isdst1,$date2,$tz2,$isdst2) = @_;</td></tr>
<tr><td class="h"><a name="3061"></a>3061</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3062"></a>3062</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3063"></a>3063</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3064"></a>3064</td><td></td><td></td><td></td><td></td><td class="s">   my($dy,$dm,$dw,$dd,$dh,$dmn,$ds) = (0,0,0,0,0,0,0);</td></tr>
<tr><td class="h"><a name="3065"></a>3065</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3066"></a>3066</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'approx'  ||  $mode eq 'bapprox') {</td></tr>
<tr><td class="h"><a name="3067"></a>3067</td><td></td><td></td><td></td><td></td><td class="s">      my($y1,$m1,$d1,$h1,$mn1,$s1) = @$date1;</td></tr>
<tr><td class="h"><a name="3068"></a>3068</td><td></td><td></td><td></td><td></td><td class="s">      my($y2,$m2,$d2,$h2,$mn2,$s2) = @$date2;</td></tr>
<tr><td class="h"><a name="3069"></a>3069</td><td></td><td></td><td></td><td></td><td class="s">      $dy       = $y2-$y1;</td></tr>
<tr><td class="h"><a name="3070"></a>3070</td><td></td><td></td><td></td><td></td><td class="s">      $dm       = $m2-$m1;</td></tr>
<tr><td class="h"><a name="3071"></a>3071</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3072"></a>3072</td><td></td><td></td><td></td><td></td><td class="s">      if ($dy  ||  $dm) {</td></tr>
<tr><td class="h"><a name="3073"></a>3073</td><td></td><td></td><td></td><td></td><td class="s">         # If $d1 is greater than the number of days allowed in the</td></tr>
<tr><td class="h"><a name="3074"></a>3074</td><td></td><td></td><td></td><td></td><td class="s">         # month $y2/$m2, set it equal to the number of days. In other</td></tr>
<tr><td class="h"><a name="3075"></a>3075</td><td></td><td></td><td></td><td></td><td class="s">         # words:</td></tr>
<tr><td class="h"><a name="3076"></a>3076</td><td></td><td></td><td></td><td></td><td class="s">         #   Jan 31 2006 to Feb 28 2008 = 2 years 1 month</td></tr>
<tr><td class="h"><a name="3077"></a>3077</td><td></td><td></td><td></td><td></td><td class="s">         #</td></tr>
<tr><td class="h"><a name="3078"></a>3078</td><td></td><td></td><td></td><td></td><td class="s">         my $dim   = $dmb-&gt;days_in_month($y2,$m2);</td></tr>
<tr><td class="h"><a name="3079"></a>3079</td><td></td><td></td><td></td><td></td><td class="s">         $d1       = $dim  if ($d1 &gt; $dim);</td></tr>
<tr><td class="h"><a name="3080"></a>3080</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3081"></a>3081</td><td></td><td></td><td></td><td></td><td class="s">         $date1    = [$y2,$m2,$d1,$h1,$mn1,$s1];</td></tr>
<tr><td class="h"><a name="3082"></a>3082</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3083"></a>3083</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3084"></a>3084</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3085"></a>3085</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'semi'  ||  $mode eq 'approx') {</td></tr>
<tr><td class="h"><a name="3086"></a>3086</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3087"></a>3087</td><td></td><td></td><td></td><td></td><td class="s">      # Calculate the number of weeks/days apart (temporarily ignoring</td></tr>
<tr><td class="h"><a name="3088"></a>3088</td><td></td><td></td><td></td><td></td><td class="s">      # DST effects).</td></tr>
<tr><td class="h"><a name="3089"></a>3089</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3090"></a>3090</td><td></td><td></td><td></td><td></td><td class="s">      $dd      = $dmb-&gt;days_since_1BC($date2) -</td></tr>
<tr><td class="h"><a name="3091"></a>3091</td><td></td><td></td><td></td><td></td><td class="s">                 $dmb-&gt;days_since_1BC($date1);</td></tr>
<tr><td class="h"><a name="3092"></a>3092</td><td></td><td></td><td></td><td></td><td class="s">      $dw      = int($dd/7);</td></tr>
<tr><td class="h"><a name="3093"></a>3093</td><td></td><td></td><td></td><td></td><td class="s">      $dd     -= $dw*7;</td></tr>
<tr><td class="h"><a name="3094"></a>3094</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3095"></a>3095</td><td></td><td></td><td></td><td></td><td class="s">      # Adding $dd to $date1 gives: ($y2,$m2,$d2, $h1,$mn1,$s1)</td></tr>
<tr><td class="h"><a name="3096"></a>3096</td><td></td><td></td><td></td><td></td><td class="s">      # Make sure this is valid (taking into account DST effects).</td></tr>
<tr><td class="h"><a name="3097"></a>3097</td><td></td><td></td><td></td><td></td><td class="s">      # If it isn't, make it valid.</td></tr>
<tr><td class="h"><a name="3098"></a>3098</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3099"></a>3099</td><td></td><td></td><td></td><td></td><td class="s">      if ($dw  ||  $dd) {</td></tr>
<tr><td class="h"><a name="3100"></a>3100</td><td></td><td></td><td></td><td></td><td class="s">         my($y1,$m1,$d1,$h1,$mn1,$s1) = @$date1;</td></tr>
<tr><td class="h"><a name="3101"></a>3101</td><td></td><td></td><td></td><td></td><td class="s">         my($y2,$m2,$d2,$h2,$mn2,$s2) = @$date2;</td></tr>
<tr><td class="h"><a name="3102"></a>3102</td><td></td><td></td><td></td><td></td><td class="s">         $date1                       = [$y2,$m2,$d2,$h1,$mn1,$s1];</td></tr>
<tr><td class="h"><a name="3103"></a>3103</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3104"></a>3104</td><td></td><td></td><td></td><td></td><td class="s">      if ($dy  ||  $dm  ||  $dw  ||  $dd) {</td></tr>
<tr><td class="h"><a name="3105"></a>3105</td><td></td><td></td><td></td><td></td><td class="s">         my $force                    = ( ($dw &gt; 0 || $dd &gt; 0) ? 1 : -1 );</td></tr>
<tr><td class="h"><a name="3106"></a>3106</td><td></td><td></td><td></td><td></td><td class="s">         my($off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3107"></a>3107</td><td></td><td></td><td></td><td></td><td class="s">         ($date1,$off,$isdst,$abb)    =</td></tr>
<tr><td class="h"><a name="3108"></a>3108</td><td></td><td></td><td></td><td></td><td class="s">           $self-&gt;_calc_date_check_dst($date1,$tz2,$isdst2,$force);</td></tr>
<tr><td class="h"><a name="3109"></a>3109</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3110"></a>3110</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3111"></a>3111</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3112"></a>3112</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'bsemi'  ||  $mode eq 'bapprox') {</td></tr>
<tr><td class="h"><a name="3113"></a>3113</td><td></td><td></td><td></td><td></td><td class="s">      # Calculate the number of weeks.  Ignore the days</td></tr>
<tr><td class="h"><a name="3114"></a>3114</td><td></td><td></td><td></td><td></td><td class="s">      # part.  Also, since there are no DST effects, we don't</td></tr>
<tr><td class="h"><a name="3115"></a>3115</td><td></td><td></td><td></td><td></td><td class="s">      # have to check for validity.</td></tr>
<tr><td class="h"><a name="3116"></a>3116</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3117"></a>3117</td><td></td><td></td><td></td><td></td><td class="s">      $dd      = $dmb-&gt;days_since_1BC($date2) -</td></tr>
<tr><td class="h"><a name="3118"></a>3118</td><td></td><td></td><td></td><td></td><td class="s">                 $dmb-&gt;days_since_1BC($date1);</td></tr>
<tr><td class="h"><a name="3119"></a>3119</td><td></td><td></td><td></td><td></td><td class="s">      $dw      = int($dd/7);</td></tr>
<tr><td class="h"><a name="3120"></a>3120</td><td></td><td></td><td></td><td></td><td class="s">      $dd      = 0;</td></tr>
<tr><td class="h"><a name="3121"></a>3121</td><td></td><td></td><td></td><td></td><td class="s">      $date1   = $dmb-&gt;calc_date_days($date1,$dw*7);</td></tr>
<tr><td class="h"><a name="3122"></a>3122</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3123"></a>3123</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3124"></a>3124</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'exact'  ||  $mode eq 'semi'  ||  $mode eq 'approx') {</td></tr>
<tr><td class="h"><a name="3125"></a>3125</td><td></td><td></td><td></td><td></td><td class="s">      my $sec1 = $dmb-&gt;secs_since_1970($date1);</td></tr>
<tr><td class="h"><a name="3126"></a>3126</td><td></td><td></td><td></td><td></td><td class="s">      my $sec2 = $dmb-&gt;secs_since_1970($date2);</td></tr>
<tr><td class="h"><a name="3127"></a>3127</td><td></td><td></td><td></td><td></td><td class="s">      $ds      = $sec2 - $sec1;</td></tr>
<tr><td class="h"><a name="3128"></a>3128</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3129"></a>3129</td><td></td><td></td><td></td><td></td><td class="s">      {</td></tr>
<tr><td class="h"><a name="3130"></a>3130</td><td class="c3">2</td><td class="c0"><span title="Avg 420µs">840µs</span></td><td class="c3">2</td><td class="c3">8µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 7µs (6+1) within Date::Manip::Date::BEGIN@3130 which was called:
#    once (6µs+1µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#3130">line 3130</a></div></div>         no integer;<div class="calls"><div class="calls_out">         # spent     7µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#3130">Date::Manip::Date::BEGIN@3130</a>
         # spent     1µs making 1 call to <a href="integer-pm-27-line.html#89">integer::unimport</a></div></div></td></tr>
<tr><td class="h"><a name="3131"></a>3131</td><td></td><td></td><td></td><td></td><td class="s">         $dh   = int($ds/3600);</td></tr>
<tr><td class="h"><a name="3132"></a>3132</td><td></td><td></td><td></td><td></td><td class="s">         $ds  -= $dh*3600;</td></tr>
<tr><td class="h"><a name="3133"></a>3133</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3134"></a>3134</td><td></td><td></td><td></td><td></td><td class="s">      $dmn     = int($ds/60);</td></tr>
<tr><td class="h"><a name="3135"></a>3135</td><td></td><td></td><td></td><td></td><td class="s">      $ds     -= $dmn*60;</td></tr>
<tr><td class="h"><a name="3136"></a>3136</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3137"></a>3137</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3138"></a>3138</td><td></td><td></td><td></td><td></td><td class="s">   if ($mode eq 'business'  ||  $mode eq 'bsemi'  ||  $mode eq 'bapprox') {</td></tr>
<tr><td class="h"><a name="3139"></a>3139</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3140"></a>3140</td><td></td><td></td><td></td><td></td><td class="s">      # Make sure both are work days</td></tr>
<tr><td class="h"><a name="3141"></a>3141</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3142"></a>3142</td><td></td><td></td><td></td><td></td><td class="s">      $date1 = $self-&gt;__nextprev_business_day(0,0,1,$date1);</td></tr>
<tr><td class="h"><a name="3143"></a>3143</td><td></td><td></td><td></td><td></td><td class="s">      $date2 = $self-&gt;__nextprev_business_day(0,0,1,$date2);</td></tr>
<tr><td class="h"><a name="3144"></a>3144</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3145"></a>3145</td><td></td><td></td><td></td><td></td><td class="s">      my($y1,$m1,$d1,$h1,$mn1,$s1) = @$date1;</td></tr>
<tr><td class="h"><a name="3146"></a>3146</td><td></td><td></td><td></td><td></td><td class="s">      my($y2,$m2,$d2,$h2,$mn2,$s2) = @$date2;</td></tr>
<tr><td class="h"><a name="3147"></a>3147</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3148"></a>3148</td><td></td><td></td><td></td><td></td><td class="s">      # Find out which direction we need to move $date1 to get to $date2</td></tr>
<tr><td class="h"><a name="3149"></a>3149</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3150"></a>3150</td><td></td><td></td><td></td><td></td><td class="s">      my $dir = 0;</td></tr>
<tr><td class="h"><a name="3151"></a>3151</td><td></td><td></td><td></td><td></td><td class="s">      if ($y1 &lt; $y2) {</td></tr>
<tr><td class="h"><a name="3152"></a>3152</td><td></td><td></td><td></td><td></td><td class="s">         $dir = 1;</td></tr>
<tr><td class="h"><a name="3153"></a>3153</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($y1 &gt; $y2) {</td></tr>
<tr><td class="h"><a name="3154"></a>3154</td><td></td><td></td><td></td><td></td><td class="s">         $dir = -1;</td></tr>
<tr><td class="h"><a name="3155"></a>3155</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($m1 &lt; $m2) {</td></tr>
<tr><td class="h"><a name="3156"></a>3156</td><td></td><td></td><td></td><td></td><td class="s">         $dir = 1;</td></tr>
<tr><td class="h"><a name="3157"></a>3157</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($m1 &gt; $m2) {</td></tr>
<tr><td class="h"><a name="3158"></a>3158</td><td></td><td></td><td></td><td></td><td class="s">         $dir = -1;</td></tr>
<tr><td class="h"><a name="3159"></a>3159</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($d1 &lt; $d2) {</td></tr>
<tr><td class="h"><a name="3160"></a>3160</td><td></td><td></td><td></td><td></td><td class="s">         $dir = 1;</td></tr>
<tr><td class="h"><a name="3161"></a>3161</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($d1 &gt; $d2) {</td></tr>
<tr><td class="h"><a name="3162"></a>3162</td><td></td><td></td><td></td><td></td><td class="s">         $dir = -1;</td></tr>
<tr><td class="h"><a name="3163"></a>3163</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3164"></a>3164</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3165"></a>3165</td><td></td><td></td><td></td><td></td><td class="s">      # Now do the day part (to get to the same day)</td></tr>
<tr><td class="h"><a name="3166"></a>3166</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3167"></a>3167</td><td></td><td></td><td></td><td></td><td class="s">      $dd = 0;</td></tr>
<tr><td class="h"><a name="3168"></a>3168</td><td></td><td></td><td></td><td></td><td class="s">      while ($dir) {</td></tr>
<tr><td class="h"><a name="3169"></a>3169</td><td></td><td></td><td></td><td></td><td class="s">         ($y1,$m1,$d1) = @{ $dmb-&gt;calc_date_days([$y1,$m1,$d1],$dir) };</td></tr>
<tr><td class="h"><a name="3170"></a>3170</td><td></td><td></td><td></td><td></td><td class="s">         $dd += $dir  if ($self-&gt;__is_business_day([$y1,$m1,$d1,0,0,0],0));</td></tr>
<tr><td class="h"><a name="3171"></a>3171</td><td></td><td></td><td></td><td></td><td class="s">         $dir = 0  if ($y1 == $y2  &amp;&amp;  $m1 == $m2  &amp;&amp;  $d1 == $d2);</td></tr>
<tr><td class="h"><a name="3172"></a>3172</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3173"></a>3173</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3174"></a>3174</td><td></td><td></td><td></td><td></td><td class="s">      # Both dates are now on a business day, and during business</td></tr>
<tr><td class="h"><a name="3175"></a>3175</td><td></td><td></td><td></td><td></td><td class="s">      # hours, so do the hr/min/sec part trivially</td></tr>
<tr><td class="h"><a name="3176"></a>3176</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3177"></a>3177</td><td></td><td></td><td></td><td></td><td class="s">      $dh  = $h2-$h1;</td></tr>
<tr><td class="h"><a name="3178"></a>3178</td><td></td><td></td><td></td><td></td><td class="s">      $dmn = $mn2-$mn1;</td></tr>
<tr><td class="h"><a name="3179"></a>3179</td><td></td><td></td><td></td><td></td><td class="s">      $ds  = $s2-$s1;</td></tr>
<tr><td class="h"><a name="3180"></a>3180</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3181"></a>3181</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3182"></a>3182</td><td></td><td></td><td></td><td></td><td class="s">   return [ $dy,$dm,$dw,$dd,$dh,$dmn,$ds ];</td></tr>
<tr><td class="h"><a name="3183"></a>3183</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3184"></a>3184</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3185"></a>3185</td><td></td><td></td><td></td><td></td><td class="s">sub _calc_date_delta {</td></tr>
<tr><td class="h"><a name="3186"></a>3186</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$delta,$subtract) = @_;</td></tr>
<tr><td class="h"><a name="3187"></a>3187</td><td></td><td></td><td></td><td></td><td class="s">   my $ret                    = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="3188"></a>3188</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3189"></a>3189</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3190"></a>3190</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Date object invalid';</td></tr>
<tr><td class="h"><a name="3191"></a>3191</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="3192"></a>3192</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3193"></a>3193</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3194"></a>3194</td><td></td><td></td><td></td><td></td><td class="s">   if ($$delta{'err'}) {</td></tr>
<tr><td class="h"><a name="3195"></a>3195</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Delta object invalid';</td></tr>
<tr><td class="h"><a name="3196"></a>3196</td><td></td><td></td><td></td><td></td><td class="s">      return $ret;</td></tr>
<tr><td class="h"><a name="3197"></a>3197</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3198"></a>3198</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3199"></a>3199</td><td></td><td></td><td></td><td></td><td class="s">   # Get the date/delta fields</td></tr>
<tr><td class="h"><a name="3200"></a>3200</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3201"></a>3201</td><td></td><td></td><td></td><td></td><td class="s">   $subtract     = 0  if (! $subtract);</td></tr>
<tr><td class="h"><a name="3202"></a>3202</td><td></td><td></td><td></td><td></td><td class="s">   my @delta     = @{ $$delta{'data'}{'delta'} };</td></tr>
<tr><td class="h"><a name="3203"></a>3203</td><td></td><td></td><td></td><td></td><td class="s">   my @date      = @{ $$self{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="3204"></a>3204</td><td></td><td></td><td></td><td></td><td class="s">   my $business  = $$delta{'data'}{'business'};</td></tr>
<tr><td class="h"><a name="3205"></a>3205</td><td></td><td></td><td></td><td></td><td class="s">   my $tz        = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="3206"></a>3206</td><td></td><td></td><td></td><td></td><td class="s">   my $isdst     = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3207"></a>3207</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3208"></a>3208</td><td></td><td></td><td></td><td></td><td class="s">   my($err,$date2,$offset,$abbrev);</td></tr>
<tr><td class="h"><a name="3209"></a>3209</td><td></td><td></td><td></td><td></td><td class="s">   ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3210"></a>3210</td><td></td><td></td><td></td><td></td><td class="s">     $self-&gt;__calc_date_delta([@date],[@delta],$subtract,$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3211"></a>3211</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3212"></a>3212</td><td></td><td></td><td></td><td></td><td class="s">   if ($err) {</td></tr>
<tr><td class="h"><a name="3213"></a>3213</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'err'} = '[calc] Unable to perform calculation';</td></tr>
<tr><td class="h"><a name="3214"></a>3214</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3215"></a>3215</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'set'}   = 1;</td></tr>
<tr><td class="h"><a name="3216"></a>3216</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'date'}  = $date2;</td></tr>
<tr><td class="h"><a name="3217"></a>3217</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'tz'}    = $tz;</td></tr>
<tr><td class="h"><a name="3218"></a>3218</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'isdst'} = $isdst;</td></tr>
<tr><td class="h"><a name="3219"></a>3219</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'offset'}= $offset;</td></tr>
<tr><td class="h"><a name="3220"></a>3220</td><td></td><td></td><td></td><td></td><td class="s">      $$ret{'data'}{'abb'}   = $abbrev;</td></tr>
<tr><td class="h"><a name="3221"></a>3221</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3222"></a>3222</td><td></td><td></td><td></td><td></td><td class="s">   return $ret;</td></tr>
<tr><td class="h"><a name="3223"></a>3223</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3224"></a>3224</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3225"></a>3225</td><td></td><td></td><td></td><td></td><td class="s">sub __calc_date_delta {</td></tr>
<tr><td class="h"><a name="3226"></a>3226</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$delta,$subtract,$business,$tz,$isdst) = @_;</td></tr>
<tr><td class="h"><a name="3227"></a>3227</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3228"></a>3228</td><td></td><td></td><td></td><td></td><td class="s">   my ($dy,$dm,$dw,$dd,$dh,$dmn,$ds) = @$delta;</td></tr>
<tr><td class="h"><a name="3229"></a>3229</td><td></td><td></td><td></td><td></td><td class="s">   my @date                          = @$date;</td></tr>
<tr><td class="h"><a name="3230"></a>3230</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3231"></a>3231</td><td></td><td></td><td></td><td></td><td class="s">   my ($err,$date2,$offset,$abbrev);</td></tr>
<tr><td class="h"><a name="3232"></a>3232</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3233"></a>3233</td><td></td><td></td><td></td><td></td><td class="s">   # In business mode, daylight saving time is ignored, so days are</td></tr>
<tr><td class="h"><a name="3234"></a>3234</td><td></td><td></td><td></td><td></td><td class="s">   # of a constant, known length, so they'll be done in the exact</td></tr>
<tr><td class="h"><a name="3235"></a>3235</td><td></td><td></td><td></td><td></td><td class="s">   # function.  Otherwise, they'll be done in the approximate function.</td></tr>
<tr><td class="h"><a name="3236"></a>3236</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3237"></a>3237</td><td></td><td></td><td></td><td></td><td class="s">   # Also in business mode, if $subtract = 2, then the starting date</td></tr>
<tr><td class="h"><a name="3238"></a>3238</td><td></td><td></td><td></td><td></td><td class="s">   # must be a business date or an error occurs.</td></tr>
<tr><td class="h"><a name="3239"></a>3239</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3240"></a>3240</td><td></td><td></td><td></td><td></td><td class="s">   my($dd_exact,$dd_approx);</td></tr>
<tr><td class="h"><a name="3241"></a>3241</td><td></td><td></td><td></td><td></td><td class="s">   if ($business) {</td></tr>
<tr><td class="h"><a name="3242"></a>3242</td><td></td><td></td><td></td><td></td><td class="s">      $dd_exact  = $dd;</td></tr>
<tr><td class="h"><a name="3243"></a>3243</td><td></td><td></td><td></td><td></td><td class="s">      $dd_approx = 0;</td></tr>
<tr><td class="h"><a name="3244"></a>3244</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3245"></a>3245</td><td></td><td></td><td></td><td></td><td class="s">      if ($subtract == 2  &amp;&amp;  ! $self-&gt;__is_business_day($date,1)) {</td></tr>
<tr><td class="h"><a name="3246"></a>3246</td><td></td><td></td><td></td><td></td><td class="s">         return (1);</td></tr>
<tr><td class="h"><a name="3247"></a>3247</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3248"></a>3248</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3249"></a>3249</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3250"></a>3250</td><td></td><td></td><td></td><td></td><td class="s">      $dd_exact  = 0;</td></tr>
<tr><td class="h"><a name="3251"></a>3251</td><td></td><td></td><td></td><td></td><td class="s">      $dd_approx = $dd;</td></tr>
<tr><td class="h"><a name="3252"></a>3252</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3253"></a>3253</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3254"></a>3254</td><td></td><td></td><td></td><td></td><td class="s">   if      ($subtract == 2  &amp;&amp;  ($dy || $dm || $dw || $dd_approx)) {</td></tr>
<tr><td class="h"><a name="3255"></a>3255</td><td></td><td></td><td></td><td></td><td class="s">      # For subtract=2:</td></tr>
<tr><td class="h"><a name="3256"></a>3256</td><td></td><td></td><td></td><td></td><td class="s">      #    DATE = RET + DELTA</td></tr>
<tr><td class="h"><a name="3257"></a>3257</td><td></td><td></td><td></td><td></td><td class="s">      #</td></tr>
<tr><td class="h"><a name="3258"></a>3258</td><td></td><td></td><td></td><td></td><td class="s">      # The delta consisists of an approximate part (which is added first)</td></tr>
<tr><td class="h"><a name="3259"></a>3259</td><td></td><td></td><td></td><td></td><td class="s">      # and an exact part (added second):</td></tr>
<tr><td class="h"><a name="3260"></a>3260</td><td></td><td></td><td></td><td></td><td class="s">      #    DATE = RET + DELTA(approx) + DELTA(exact)</td></tr>
<tr><td class="h"><a name="3261"></a>3261</td><td></td><td></td><td></td><td></td><td class="s">      #    DATE = RET' + DELTA(exact)</td></tr>
<tr><td class="h"><a name="3262"></a>3262</td><td></td><td></td><td></td><td></td><td class="s">      #        where RET' = RET + DELTA(approx)</td></tr>
<tr><td class="h"><a name="3263"></a>3263</td><td></td><td></td><td></td><td></td><td class="s">      #</td></tr>
<tr><td class="h"><a name="3264"></a>3264</td><td></td><td></td><td></td><td></td><td class="s">      # For an exact delta, subtract==2 and subtract==1 are equivalent,</td></tr>
<tr><td class="h"><a name="3265"></a>3265</td><td></td><td></td><td></td><td></td><td class="s">      # so this can be written:</td></tr>
<tr><td class="h"><a name="3266"></a>3266</td><td></td><td></td><td></td><td></td><td class="s">      #    DATE - DELTA(exact) = RET'</td></tr>
<tr><td class="h"><a name="3267"></a>3267</td><td></td><td></td><td></td><td></td><td class="s">      #</td></tr>
<tr><td class="h"><a name="3268"></a>3268</td><td></td><td></td><td></td><td></td><td class="s">      # So the inverse subtract only needs include the approximate</td></tr>
<tr><td class="h"><a name="3269"></a>3269</td><td></td><td></td><td></td><td></td><td class="s">      # portion of the delta.</td></tr>
<tr><td class="h"><a name="3270"></a>3270</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3271"></a>3271</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3272"></a>3272</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta_exact([@date],[-1*$dd_exact,-1*$dh,-1*$dmn,-1*$ds],</td></tr>
<tr><td class="h"><a name="3273"></a>3273</td><td></td><td></td><td></td><td></td><td class="s">                                       $business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3274"></a>3274</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3275"></a>3275</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3276"></a>3276</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta_inverse($date2,[$dy,$dm,$dw,$dd_approx],</td></tr>
<tr><td class="h"><a name="3277"></a>3277</td><td></td><td></td><td></td><td></td><td class="s">                                         $business,$tz,$isdst)</td></tr>
<tr><td class="h"><a name="3278"></a>3278</td><td></td><td></td><td></td><td></td><td class="s">          if (! $err);</td></tr>
<tr><td class="h"><a name="3279"></a>3279</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3280"></a>3280</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3281"></a>3281</td><td></td><td></td><td></td><td></td><td class="s">      # We'll add the approximate part, followed by the exact part.</td></tr>
<tr><td class="h"><a name="3282"></a>3282</td><td></td><td></td><td></td><td></td><td class="s">      # After the approximate part, we need to make sure we're on</td></tr>
<tr><td class="h"><a name="3283"></a>3283</td><td></td><td></td><td></td><td></td><td class="s">      # a valid business day in business mode.</td></tr>
<tr><td class="h"><a name="3284"></a>3284</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3285"></a>3285</td><td></td><td></td><td></td><td></td><td class="s">      ($dy,$dm,$dw,$dd_exact,$dd_approx,$dh,$dmn,$ds) =</td></tr>
<tr><td class="h"><a name="3286"></a>3286</td><td></td><td></td><td></td><td></td><td class="s">        map { -1*$_ } ($dy,$dm,$dw,$dd_exact,$dd_approx,$dh,$dmn,$ds)</td></tr>
<tr><td class="h"><a name="3287"></a>3287</td><td></td><td></td><td></td><td></td><td class="s">          if ($subtract);</td></tr>
<tr><td class="h"><a name="3288"></a>3288</td><td></td><td></td><td></td><td></td><td class="s">      @$date2 = @date;</td></tr>
<tr><td class="h"><a name="3289"></a>3289</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3290"></a>3290</td><td></td><td></td><td></td><td></td><td class="s">      if ($dy ||  $dm  ||  $dw  ||  $dd) {</td></tr>
<tr><td class="h"><a name="3291"></a>3291</td><td></td><td></td><td></td><td></td><td class="s">         ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3292"></a>3292</td><td></td><td></td><td></td><td></td><td class="s">           $self-&gt;__calc_date_delta_approx($date2,[$dy,$dm,$dw,$dd_approx],</td></tr>
<tr><td class="h"><a name="3293"></a>3293</td><td></td><td></td><td></td><td></td><td class="s">                                           $business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3294"></a>3294</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($business) {</td></tr>
<tr><td class="h"><a name="3295"></a>3295</td><td></td><td></td><td></td><td></td><td class="s">         $date2 = $self-&gt;__nextprev_business_day(0,0,1,$date2);</td></tr>
<tr><td class="h"><a name="3296"></a>3296</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3297"></a>3297</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3298"></a>3298</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date2,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3299"></a>3299</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta_exact($date2,[$dd_exact,$dh,$dmn,$ds],</td></tr>
<tr><td class="h"><a name="3300"></a>3300</td><td></td><td></td><td></td><td></td><td class="s">                                       $business,$tz,$isdst)</td></tr>
<tr><td class="h"><a name="3301"></a>3301</td><td></td><td></td><td></td><td></td><td class="s">          if (! $err  &amp;&amp;  ($dd_exact ||  $dh  ||  $dmn  ||  $ds));</td></tr>
<tr><td class="h"><a name="3302"></a>3302</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3303"></a>3303</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3304"></a>3304</td><td></td><td></td><td></td><td></td><td class="s">   return($err,$date2,$offset,$isdst,$abbrev);</td></tr>
<tr><td class="h"><a name="3305"></a>3305</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3306"></a>3306</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3307"></a>3307</td><td></td><td></td><td></td><td></td><td class="s"># Do the inverse part of a calculation.</td></tr>
<tr><td class="h"><a name="3308"></a>3308</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3309"></a>3309</td><td></td><td></td><td></td><td></td><td class="s"># $delta = [$dy,$dm,$dw,$dd]</td></tr>
<tr><td class="h"><a name="3310"></a>3310</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3311"></a>3311</td><td></td><td></td><td></td><td></td><td class="s">sub __calc_date_delta_inverse {</td></tr>
<tr><td class="h"><a name="3312"></a>3312</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$delta,$business,$tz,$isdst) = @_;</td></tr>
<tr><td class="h"><a name="3313"></a>3313</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3314"></a>3314</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3315"></a>3315</td><td></td><td></td><td></td><td></td><td class="s">   my @date2;</td></tr>
<tr><td class="h"><a name="3316"></a>3316</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3317"></a>3317</td><td></td><td></td><td></td><td></td><td class="s">   # Given: DATE1, DELTA</td></tr>
<tr><td class="h"><a name="3318"></a>3318</td><td></td><td></td><td></td><td></td><td class="s">   # Find:  DATE2</td></tr>
<tr><td class="h"><a name="3319"></a>3319</td><td></td><td></td><td></td><td></td><td class="s">   #        where DATE2 + DELTA = DATE1</td></tr>
<tr><td class="h"><a name="3320"></a>3320</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3321"></a>3321</td><td></td><td></td><td></td><td></td><td class="s">   # Start with:</td></tr>
<tr><td class="h"><a name="3322"></a>3322</td><td></td><td></td><td></td><td></td><td class="s">   #    DATE2 = DATE1 - DELTA</td></tr>
<tr><td class="h"><a name="3323"></a>3323</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3324"></a>3324</td><td></td><td></td><td></td><td></td><td class="s">   # if (DATE2+DELTA &lt; DATE1)</td></tr>
<tr><td class="h"><a name="3325"></a>3325</td><td></td><td></td><td></td><td></td><td class="s">   #    while (1)</td></tr>
<tr><td class="h"><a name="3326"></a>3326</td><td></td><td></td><td></td><td></td><td class="s">   #       DATE2 = DATE2 + 1 day</td></tr>
<tr><td class="h"><a name="3327"></a>3327</td><td></td><td></td><td></td><td></td><td class="s">   #       if DATE2+DELTA &lt; DATE1</td></tr>
<tr><td class="h"><a name="3328"></a>3328</td><td></td><td></td><td></td><td></td><td class="s">   #          next</td></tr>
<tr><td class="h"><a name="3329"></a>3329</td><td></td><td></td><td></td><td></td><td class="s">   #       elsif DATE2+DELTA &gt; DATE1</td></tr>
<tr><td class="h"><a name="3330"></a>3330</td><td></td><td></td><td></td><td></td><td class="s">   #          return ERROR</td></tr>
<tr><td class="h"><a name="3331"></a>3331</td><td></td><td></td><td></td><td></td><td class="s">   #       else</td></tr>
<tr><td class="h"><a name="3332"></a>3332</td><td></td><td></td><td></td><td></td><td class="s">   #          return DATE2</td></tr>
<tr><td class="h"><a name="3333"></a>3333</td><td></td><td></td><td></td><td></td><td class="s">   #    done</td></tr>
<tr><td class="h"><a name="3334"></a>3334</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3335"></a>3335</td><td></td><td></td><td></td><td></td><td class="s">   # elsif (DATE2+DELTA &gt; DATE1)</td></tr>
<tr><td class="h"><a name="3336"></a>3336</td><td></td><td></td><td></td><td></td><td class="s">   #    while (1)</td></tr>
<tr><td class="h"><a name="3337"></a>3337</td><td></td><td></td><td></td><td></td><td class="s">   #       DATE2 = DATE2 - 1 day</td></tr>
<tr><td class="h"><a name="3338"></a>3338</td><td></td><td></td><td></td><td></td><td class="s">   #       if DATE2+DELTA &gt; DATE1</td></tr>
<tr><td class="h"><a name="3339"></a>3339</td><td></td><td></td><td></td><td></td><td class="s">   #          next</td></tr>
<tr><td class="h"><a name="3340"></a>3340</td><td></td><td></td><td></td><td></td><td class="s">   #       elsif DATE2+DELTA &lt; DATE1</td></tr>
<tr><td class="h"><a name="3341"></a>3341</td><td></td><td></td><td></td><td></td><td class="s">   #          return ERROR</td></tr>
<tr><td class="h"><a name="3342"></a>3342</td><td></td><td></td><td></td><td></td><td class="s">   #       else</td></tr>
<tr><td class="h"><a name="3343"></a>3343</td><td></td><td></td><td></td><td></td><td class="s">   #          return DATE2</td></tr>
<tr><td class="h"><a name="3344"></a>3344</td><td></td><td></td><td></td><td></td><td class="s">   #    done</td></tr>
<tr><td class="h"><a name="3345"></a>3345</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3346"></a>3346</td><td></td><td></td><td></td><td></td><td class="s">   # else</td></tr>
<tr><td class="h"><a name="3347"></a>3347</td><td></td><td></td><td></td><td></td><td class="s">   #    return DATE2</td></tr>
<tr><td class="h"><a name="3348"></a>3348</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3349"></a>3349</td><td></td><td></td><td></td><td></td><td class="s">   if ($business) {</td></tr>
<tr><td class="h"><a name="3350"></a>3350</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3351"></a>3351</td><td></td><td></td><td></td><td></td><td class="s">      my $date1 = $date;</td></tr>
<tr><td class="h"><a name="3352"></a>3352</td><td></td><td></td><td></td><td></td><td class="s">      my ($err,$date2,$off,$isd,$abb,@del,$tmp,$cmp);</td></tr>
<tr><td class="h"><a name="3353"></a>3353</td><td></td><td></td><td></td><td></td><td class="s">      @del = map { $_*-1 } @$delta;</td></tr>
<tr><td class="h"><a name="3354"></a>3354</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3355"></a>3355</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date2,$off,$isd,$abb) =</td></tr>
<tr><td class="h"><a name="3356"></a>3356</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta_approx($date,[@del],$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3357"></a>3357</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3358"></a>3358</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$tmp,$off,$isd,$abb) =</td></tr>
<tr><td class="h"><a name="3359"></a>3359</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;__calc_date_delta_approx($date2,$delta,$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3360"></a>3360</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3361"></a>3361</td><td></td><td></td><td></td><td></td><td class="s">      $cmp      = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3362"></a>3362</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3363"></a>3363</td><td></td><td></td><td></td><td></td><td class="s">      if ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3364"></a>3364</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3365"></a>3365</td><td></td><td></td><td></td><td></td><td class="s">            $date2 = $self-&gt;__nextprev_business_day(0,1,0,$date2);</td></tr>
<tr><td class="h"><a name="3366"></a>3366</td><td></td><td></td><td></td><td></td><td class="s">            ($err,$tmp,$off,$isd,$abb) =</td></tr>
<tr><td class="h"><a name="3367"></a>3367</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;__calc_date_delta_approx($date2,$delta,$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3368"></a>3368</td><td></td><td></td><td></td><td></td><td class="s">            $cmp   = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3369"></a>3369</td><td></td><td></td><td></td><td></td><td class="s">            if ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3370"></a>3370</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="3371"></a>3371</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3372"></a>3372</td><td></td><td></td><td></td><td></td><td class="s">               return (1);</td></tr>
<tr><td class="h"><a name="3373"></a>3373</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="3374"></a>3374</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="3375"></a>3375</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="3376"></a>3376</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3377"></a>3377</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3378"></a>3378</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3379"></a>3379</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3380"></a>3380</td><td></td><td></td><td></td><td></td><td class="s">            $date2 = $self-&gt;__nextprev_business_day(1,1,0,$date2);</td></tr>
<tr><td class="h"><a name="3381"></a>3381</td><td></td><td></td><td></td><td></td><td class="s">            ($err,$tmp,$off,$isd,$abb) =</td></tr>
<tr><td class="h"><a name="3382"></a>3382</td><td></td><td></td><td></td><td></td><td class="s">              $self-&gt;__calc_date_delta_approx($date2,$delta,$business,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3383"></a>3383</td><td></td><td></td><td></td><td></td><td class="s">            $cmp   = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3384"></a>3384</td><td></td><td></td><td></td><td></td><td class="s">            if ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3385"></a>3385</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="3386"></a>3386</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3387"></a>3387</td><td></td><td></td><td></td><td></td><td class="s">               return (1);</td></tr>
<tr><td class="h"><a name="3388"></a>3388</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="3389"></a>3389</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="3390"></a>3390</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="3391"></a>3391</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3392"></a>3392</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3393"></a>3393</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3394"></a>3394</td><td></td><td></td><td></td><td></td><td class="s">      @date2 = @$date2;</td></tr>
<tr><td class="h"><a name="3395"></a>3395</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3396"></a>3396</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3397"></a>3397</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3398"></a>3398</td><td></td><td></td><td></td><td></td><td class="s">      my @tmp      = @$date[0..2];   # [y,m,d]</td></tr>
<tr><td class="h"><a name="3399"></a>3399</td><td></td><td></td><td></td><td></td><td class="s">      my @hms      = @$date[3..5];   # [h,m,s]</td></tr>
<tr><td class="h"><a name="3400"></a>3400</td><td></td><td></td><td></td><td></td><td class="s">      my $date1    = [@tmp];</td></tr>
<tr><td class="h"><a name="3401"></a>3401</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3402"></a>3402</td><td></td><td></td><td></td><td></td><td class="s">      my $date2    = $dmb-&gt;_calc_date_ymwd($date1,$delta,1);</td></tr>
<tr><td class="h"><a name="3403"></a>3403</td><td></td><td></td><td></td><td></td><td class="s">      my $tmp      = $dmb-&gt;_calc_date_ymwd($date2,$delta);</td></tr>
<tr><td class="h"><a name="3404"></a>3404</td><td></td><td></td><td></td><td></td><td class="s">      my $cmp      = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3405"></a>3405</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3406"></a>3406</td><td></td><td></td><td></td><td></td><td class="s">      if ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3407"></a>3407</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3408"></a>3408</td><td></td><td></td><td></td><td></td><td class="s">            $date2 = $dmb-&gt;calc_date_days($date2,1);</td></tr>
<tr><td class="h"><a name="3409"></a>3409</td><td></td><td></td><td></td><td></td><td class="s">            $tmp   = $dmb-&gt;_calc_date_ymwd($date2,$delta);</td></tr>
<tr><td class="h"><a name="3410"></a>3410</td><td></td><td></td><td></td><td></td><td class="s">            $cmp   = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3411"></a>3411</td><td></td><td></td><td></td><td></td><td class="s">            if ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3412"></a>3412</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="3413"></a>3413</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3414"></a>3414</td><td></td><td></td><td></td><td></td><td class="s">               return (1);</td></tr>
<tr><td class="h"><a name="3415"></a>3415</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="3416"></a>3416</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="3417"></a>3417</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="3418"></a>3418</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3419"></a>3419</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3420"></a>3420</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3421"></a>3421</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3422"></a>3422</td><td></td><td></td><td></td><td></td><td class="s">            $date2 = $dmb-&gt;calc_date_days($date2,-1);</td></tr>
<tr><td class="h"><a name="3423"></a>3423</td><td></td><td></td><td></td><td></td><td class="s">            $tmp   = $dmb-&gt;_calc_date_ymwd($date2,$delta);</td></tr>
<tr><td class="h"><a name="3424"></a>3424</td><td></td><td></td><td></td><td></td><td class="s">            $cmp   = $self-&gt;_cmp_date($tmp,$date1);</td></tr>
<tr><td class="h"><a name="3425"></a>3425</td><td></td><td></td><td></td><td></td><td class="s">            if ($cmp &gt; 0) {</td></tr>
<tr><td class="h"><a name="3426"></a>3426</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="3427"></a>3427</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($cmp &lt; 0) {</td></tr>
<tr><td class="h"><a name="3428"></a>3428</td><td></td><td></td><td></td><td></td><td class="s">               return (1);</td></tr>
<tr><td class="h"><a name="3429"></a>3429</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="3430"></a>3430</td><td></td><td></td><td></td><td></td><td class="s">               last;</td></tr>
<tr><td class="h"><a name="3431"></a>3431</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="3432"></a>3432</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3433"></a>3433</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3434"></a>3434</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3435"></a>3435</td><td></td><td></td><td></td><td></td><td class="s">      @date2 = (@$date2,@hms);</td></tr>
<tr><td class="h"><a name="3436"></a>3436</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3437"></a>3437</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3438"></a>3438</td><td></td><td></td><td></td><td></td><td class="s">   # Make sure DATE2 is valid (within DST constraints) and</td></tr>
<tr><td class="h"><a name="3439"></a>3439</td><td></td><td></td><td></td><td></td><td class="s">   # return it.</td></tr>
<tr><td class="h"><a name="3440"></a>3440</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3441"></a>3441</td><td></td><td></td><td></td><td></td><td class="s">   my($date2,$abb,$off,$err);</td></tr>
<tr><td class="h"><a name="3442"></a>3442</td><td></td><td></td><td></td><td></td><td class="s">   ($date2,$off,$isdst,$abb) = $self-&gt;_calc_date_check_dst([@date2],$tz,$isdst,0);</td></tr>
<tr><td class="h"><a name="3443"></a>3443</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3444"></a>3444</td><td></td><td></td><td></td><td></td><td class="s">   return (1)  if (! defined($date2));</td></tr>
<tr><td class="h"><a name="3445"></a>3445</td><td></td><td></td><td></td><td></td><td class="s">   return (0,$date2,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3446"></a>3446</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3447"></a>3447</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3448"></a>3448</td><td></td><td></td><td></td><td></td><td class="s">sub _cmp_date {</td></tr>
<tr><td class="h"><a name="3449"></a>3449</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date0,$date1) = @_;</td></tr>
<tr><td class="h"><a name="3450"></a>3450</td><td></td><td></td><td></td><td></td><td class="s">   return ($$date0[0]  &lt;=&gt; $$date1[0]  ||</td></tr>
<tr><td class="h"><a name="3451"></a>3451</td><td></td><td></td><td></td><td></td><td class="s">           $$date0[1]  &lt;=&gt; $$date1[1]  ||</td></tr>
<tr><td class="h"><a name="3452"></a>3452</td><td></td><td></td><td></td><td></td><td class="s">           $$date0[2]  &lt;=&gt; $$date1[2]);</td></tr>
<tr><td class="h"><a name="3453"></a>3453</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3454"></a>3454</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3455"></a>3455</td><td></td><td></td><td></td><td></td><td class="s"># Do the approximate part of a calculation.</td></tr>
<tr><td class="h"><a name="3456"></a>3456</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3457"></a>3457</td><td></td><td></td><td></td><td></td><td class="s">sub __calc_date_delta_approx {</td></tr>
<tr><td class="h"><a name="3458"></a>3458</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$delta,$business,$tz,$isdst) = @_;</td></tr>
<tr><td class="h"><a name="3459"></a>3459</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3460"></a>3460</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt                 = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3461"></a>3461</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb                 = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3462"></a>3462</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s)  = @$date;</td></tr>
<tr><td class="h"><a name="3463"></a>3463</td><td></td><td></td><td></td><td></td><td class="s">   my($dy,$dm,$dw,$dd)     = @$delta;</td></tr>
<tr><td class="h"><a name="3464"></a>3464</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3465"></a>3465</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3466"></a>3466</td><td></td><td></td><td></td><td></td><td class="s">   # Do the year/month part.</td></tr>
<tr><td class="h"><a name="3467"></a>3467</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3468"></a>3468</td><td></td><td></td><td></td><td></td><td class="s">   # If we are past the last day of a month, move the date back to</td></tr>
<tr><td class="h"><a name="3469"></a>3469</td><td></td><td></td><td></td><td></td><td class="s">   # the last day of the month. i.e. Jan 31 + 1 month = Feb 28.</td></tr>
<tr><td class="h"><a name="3470"></a>3470</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3471"></a>3471</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3472"></a>3472</td><td></td><td></td><td></td><td></td><td class="s">   $y += $dy   if ($dy);</td></tr>
<tr><td class="h"><a name="3473"></a>3473</td><td></td><td></td><td></td><td></td><td class="s">   $dmb-&gt;_mod_add(-12,$dm,\$m,\$y)   # -12 means 1-12 instead of 0-11</td></tr>
<tr><td class="h"><a name="3474"></a>3474</td><td></td><td></td><td></td><td></td><td class="s">     if ($dm);</td></tr>
<tr><td class="h"><a name="3475"></a>3475</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3476"></a>3476</td><td></td><td></td><td></td><td></td><td class="s">   my $dim = $dmb-&gt;days_in_month($y,$m);</td></tr>
<tr><td class="h"><a name="3477"></a>3477</td><td></td><td></td><td></td><td></td><td class="s">   $d      = $dim  if ($d &gt; $dim);</td></tr>
<tr><td class="h"><a name="3478"></a>3478</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3479"></a>3479</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3480"></a>3480</td><td></td><td></td><td></td><td></td><td class="s">   # Do the week part.</td></tr>
<tr><td class="h"><a name="3481"></a>3481</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3482"></a>3482</td><td></td><td></td><td></td><td></td><td class="s">   # The week is treated as 7 days for both business and non-business</td></tr>
<tr><td class="h"><a name="3483"></a>3483</td><td></td><td></td><td></td><td></td><td class="s">   # calculations.</td></tr>
<tr><td class="h"><a name="3484"></a>3484</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3485"></a>3485</td><td></td><td></td><td></td><td></td><td class="s">   # In a business calculation, make sure we're on a business date.</td></tr>
<tr><td class="h"><a name="3486"></a>3486</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3487"></a>3487</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3488"></a>3488</td><td></td><td></td><td></td><td></td><td class="s">   if ($business) {</td></tr>
<tr><td class="h"><a name="3489"></a>3489</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],$dw*7) }  if ($dw);</td></tr>
<tr><td class="h"><a name="3490"></a>3490</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="3491"></a>3491</td><td></td><td></td><td></td><td></td><td class="s">        @{ $self-&gt;__nextprev_business_day(0,0,1,[$y,$m,$d,$h,$mn,$s]) };</td></tr>
<tr><td class="h"><a name="3492"></a>3492</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3493"></a>3493</td><td></td><td></td><td></td><td></td><td class="s">      $dd       += $dw*7;</td></tr>
<tr><td class="h"><a name="3494"></a>3494</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3495"></a>3495</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3496"></a>3496</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3497"></a>3497</td><td></td><td></td><td></td><td></td><td class="s">   # Now do the day part.  $dd is always 0 in business calculations.</td></tr>
<tr><td class="h"><a name="3498"></a>3498</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3499"></a>3499</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3500"></a>3500</td><td></td><td></td><td></td><td></td><td class="s">   if ($dd) {</td></tr>
<tr><td class="h"><a name="3501"></a>3501</td><td></td><td></td><td></td><td></td><td class="s">      ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],$dd) };</td></tr>
<tr><td class="h"><a name="3502"></a>3502</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3503"></a>3503</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3504"></a>3504</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3505"></a>3505</td><td></td><td></td><td></td><td></td><td class="s">   # At this point, we need to make sure that we're a valid date</td></tr>
<tr><td class="h"><a name="3506"></a>3506</td><td></td><td></td><td></td><td></td><td class="s">   # (within the constraints of DST).</td></tr>
<tr><td class="h"><a name="3507"></a>3507</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3508"></a>3508</td><td></td><td></td><td></td><td></td><td class="s">   # If it is not valid in this offset, try the other one.  If neither</td></tr>
<tr><td class="h"><a name="3509"></a>3509</td><td></td><td></td><td></td><td></td><td class="s">   # works, then we want the the date to be 24 hours later than the</td></tr>
<tr><td class="h"><a name="3510"></a>3510</td><td></td><td></td><td></td><td></td><td class="s">   # previous day at this time (if $dd &gt; 0) or 24 hours earlier than</td></tr>
<tr><td class="h"><a name="3511"></a>3511</td><td></td><td></td><td></td><td></td><td class="s">   # the next day at this time (if $dd &lt; 0).  We'll use the 24 hour</td></tr>
<tr><td class="h"><a name="3512"></a>3512</td><td></td><td></td><td></td><td></td><td class="s">   # definition even for business days, but then we'll double check</td></tr>
<tr><td class="h"><a name="3513"></a>3513</td><td></td><td></td><td></td><td></td><td class="s">   # that the resulting date is a business date.</td></tr>
<tr><td class="h"><a name="3514"></a>3514</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="3515"></a>3515</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3516"></a>3516</td><td></td><td></td><td></td><td></td><td class="s">   my $force = ( ($dd &gt; 0  ||  $dw &gt; 0  ||  $dm &gt; 0  ||  $dy &gt; 0) ? 1 : -1 );</td></tr>
<tr><td class="h"><a name="3517"></a>3517</td><td></td><td></td><td></td><td></td><td class="s">   my($off,$abb);</td></tr>
<tr><td class="h"><a name="3518"></a>3518</td><td></td><td></td><td></td><td></td><td class="s">   ($date,$off,$isdst,$abb) =</td></tr>
<tr><td class="h"><a name="3519"></a>3519</td><td></td><td></td><td></td><td></td><td class="s">     $self-&gt;_calc_date_check_dst([$y,$m,$d,$h,$mn,$s],$tz,$isdst,$force);</td></tr>
<tr><td class="h"><a name="3520"></a>3520</td><td></td><td></td><td></td><td></td><td class="s">   return (0,$date,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3521"></a>3521</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3522"></a>3522</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3523"></a>3523</td><td></td><td></td><td></td><td></td><td class="s"># Do the exact part of a calculation.</td></tr>
<tr><td class="h"><a name="3524"></a>3524</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3525"></a>3525</td><td></td><td></td><td></td><td></td><td class="s">sub __calc_date_delta_exact {</td></tr>
<tr><td class="h"><a name="3526"></a>3526</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$delta,$business,$tz,$isdst) = @_;</td></tr>
<tr><td class="h"><a name="3527"></a>3527</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3528"></a>3528</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3529"></a>3529</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3530"></a>3530</td><td></td><td></td><td></td><td></td><td class="s">   if ($business) {</td></tr>
<tr><td class="h"><a name="3531"></a>3531</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3532"></a>3532</td><td></td><td></td><td></td><td></td><td class="s">      # Simplify hours/minutes/seconds where the day length is defined</td></tr>
<tr><td class="h"><a name="3533"></a>3533</td><td></td><td></td><td></td><td></td><td class="s">      # by the start/end of the business day.</td></tr>
<tr><td class="h"><a name="3534"></a>3534</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3535"></a>3535</td><td></td><td></td><td></td><td></td><td class="s">      my ($dd,$dh,$dmn,$ds)  = @$delta;</td></tr>
<tr><td class="h"><a name="3536"></a>3536</td><td></td><td></td><td></td><td></td><td class="s">      my ($y,$m,$d,$h,$mn,$s)= @$date;</td></tr>
<tr><td class="h"><a name="3537"></a>3537</td><td></td><td></td><td></td><td></td><td class="s">      my ($hbeg,$mbeg,$sbeg) = @{ $$dmb{'data'}{'calc'}{'workdaybeg'} };</td></tr>
<tr><td class="h"><a name="3538"></a>3538</td><td></td><td></td><td></td><td></td><td class="s">      my ($hend,$mend,$send) = @{ $$dmb{'data'}{'calc'}{'workdayend'} };</td></tr>
<tr><td class="h"><a name="3539"></a>3539</td><td></td><td></td><td></td><td></td><td class="s">      my $bdlen              = $$dmb{'data'}{'len'}{'bdlength'};</td></tr>
<tr><td class="h"><a name="3540"></a>3540</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3541"></a>3541</td><td class="c3">2</td><td class="c3"><span title="Avg 16µs">33µs</span></td><td class="c3">2</td><td class="c3">9µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 8µs (7+1) within Date::Manip::Date::BEGIN@3541 which was called:
#    once (7µs+1µs) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#3541">line 3541</a></div></div>      no integer;<div class="calls"><div class="calls_out">      # spent     8µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#3541">Date::Manip::Date::BEGIN@3541</a>
      # spent     1µs making 1 call to <a href="integer-pm-27-line.html#89">integer::unimport</a></div></div></td></tr>
<tr><td class="h"><a name="3542"></a>3542</td><td></td><td></td><td></td><td></td><td class="s">      my $tmp;</td></tr>
<tr><td class="h"><a name="3543"></a>3543</td><td></td><td></td><td></td><td></td><td class="s">      $ds += $dh*3600 + $dmn*60;</td></tr>
<tr><td class="h"><a name="3544"></a>3544</td><td></td><td></td><td></td><td></td><td class="s">      $tmp = int($ds/$bdlen);</td></tr>
<tr><td class="h"><a name="3545"></a>3545</td><td></td><td></td><td></td><td></td><td class="s">      $dd += $tmp;</td></tr>
<tr><td class="h"><a name="3546"></a>3546</td><td></td><td></td><td></td><td></td><td class="s">      $ds -= $tmp*$bdlen;</td></tr>
<tr><td class="h"><a name="3547"></a>3547</td><td></td><td></td><td></td><td></td><td class="s">      $dh  = int($ds/3600);</td></tr>
<tr><td class="h"><a name="3548"></a>3548</td><td></td><td></td><td></td><td></td><td class="s">      $ds -= $dh*3600;</td></tr>
<tr><td class="h"><a name="3549"></a>3549</td><td></td><td></td><td></td><td></td><td class="s">      $dmn = int($ds/60);</td></tr>
<tr><td class="h"><a name="3550"></a>3550</td><td></td><td></td><td></td><td></td><td class="s">      $ds -= $dmn*60;</td></tr>
<tr><td class="h"><a name="3551"></a>3551</td><td class="c3">2</td><td class="c0"><span title="Avg 1.18ms">2.35ms</span></td><td class="c3">2</td><td class="c3">6µs</td><td class="s"><div class="calls"><div class="calls_in"># spent 5µs (4+900ns) within Date::Manip::Date::BEGIN@3551 which was called:
#    once (4µs+900ns) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#3551">line 3551</a></div></div>      use integer;<div class="calls"><div class="calls_out">      # spent     5µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#3551">Date::Manip::Date::BEGIN@3551</a>
      # spent   900ns making 1 call to <a href="integer-pm-27-line.html#85">integer::import</a></div></div></td></tr>
<tr><td class="h"><a name="3552"></a>3552</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3553"></a>3553</td><td></td><td></td><td></td><td></td><td class="s">      if ($dd) {</td></tr>
<tr><td class="h"><a name="3554"></a>3554</td><td></td><td></td><td></td><td></td><td class="s">         my $prev = 0;</td></tr>
<tr><td class="h"><a name="3555"></a>3555</td><td></td><td></td><td></td><td></td><td class="s">         if ($dd &lt; 1) {</td></tr>
<tr><td class="h"><a name="3556"></a>3556</td><td></td><td></td><td></td><td></td><td class="s">            $prev = 1;</td></tr>
<tr><td class="h"><a name="3557"></a>3557</td><td></td><td></td><td></td><td></td><td class="s">            $dd  *= -1;</td></tr>
<tr><td class="h"><a name="3558"></a>3558</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3559"></a>3559</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3560"></a>3560</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="3561"></a>3561</td><td></td><td></td><td></td><td></td><td class="s">           @{ $self-&gt;__nextprev_business_day($prev,$dd,0,[$y,$m,$d,$h,$mn,$s]) };</td></tr>
<tr><td class="h"><a name="3562"></a>3562</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3563"></a>3563</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3564"></a>3564</td><td></td><td></td><td></td><td></td><td class="s">      # At this point, we're adding less than a day for the</td></tr>
<tr><td class="h"><a name="3565"></a>3565</td><td></td><td></td><td></td><td></td><td class="s">      # hours/minutes/seconds part AND we know that the current</td></tr>
<tr><td class="h"><a name="3566"></a>3566</td><td></td><td></td><td></td><td></td><td class="s">      # day is during business hours.</td></tr>
<tr><td class="h"><a name="3567"></a>3567</td><td></td><td></td><td></td><td></td><td class="s">      #</td></tr>
<tr><td class="h"><a name="3568"></a>3568</td><td></td><td></td><td></td><td></td><td class="s">      # We'll add them (without affecting days... we'll need to</td></tr>
<tr><td class="h"><a name="3569"></a>3569</td><td></td><td></td><td></td><td></td><td class="s">      # test things by hand to make sure we should or shouldn't</td></tr>
<tr><td class="h"><a name="3570"></a>3570</td><td></td><td></td><td></td><td></td><td class="s">      # do that.</td></tr>
<tr><td class="h"><a name="3571"></a>3571</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3572"></a>3572</td><td></td><td></td><td></td><td></td><td class="s">      $dmb-&gt;_mod_add(60,$ds,\$s,\$mn);</td></tr>
<tr><td class="h"><a name="3573"></a>3573</td><td></td><td></td><td></td><td></td><td class="s">      $dmb-&gt;_mod_add(60,$dmn,\$mn,\$h);</td></tr>
<tr><td class="h"><a name="3574"></a>3574</td><td></td><td></td><td></td><td></td><td class="s">      $h += $dh;</td></tr>
<tr><td class="h"><a name="3575"></a>3575</td><td></td><td></td><td></td><td></td><td class="s">      # Note: it's possible that $h &gt; 23 at this point or $h &lt; 0</td></tr>
<tr><td class="h"><a name="3576"></a>3576</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3577"></a>3577</td><td></td><td></td><td></td><td></td><td class="s">      if ($h &gt; $hend  ||</td></tr>
<tr><td class="h"><a name="3578"></a>3578</td><td></td><td></td><td></td><td></td><td class="s">          ($h == $hend  &amp;&amp;  $mn &gt; $mend)  ||</td></tr>
<tr><td class="h"><a name="3579"></a>3579</td><td></td><td></td><td></td><td></td><td class="s">          ($h == $hend  &amp;&amp;  $mn == $mend  &amp;&amp;  $s &gt; $send)  ||</td></tr>
<tr><td class="h"><a name="3580"></a>3580</td><td></td><td></td><td></td><td></td><td class="s">          ($h == $hend  &amp;&amp;  $mn == $mend  &amp;&amp;  $s == $send)) {</td></tr>
<tr><td class="h"><a name="3581"></a>3581</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3582"></a>3582</td><td></td><td></td><td></td><td></td><td class="s">         # We've gone past the end of the business day.</td></tr>
<tr><td class="h"><a name="3583"></a>3583</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3584"></a>3584</td><td></td><td></td><td></td><td></td><td class="s">         my $t2      = $dmb-&gt;calc_time_time([$h,$mn,$s],[$hend,$mend,$send],1);</td></tr>
<tr><td class="h"><a name="3585"></a>3585</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3586"></a>3586</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3587"></a>3587</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],1) };</td></tr>
<tr><td class="h"><a name="3588"></a>3588</td><td></td><td></td><td></td><td></td><td class="s">            last  if ($self-&gt;__is_business_day([$y,$m,$d,$h,$mn,$s]));</td></tr>
<tr><td class="h"><a name="3589"></a>3589</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3590"></a>3590</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3591"></a>3591</td><td></td><td></td><td></td><td></td><td class="s">         ($h,$mn,$s) = @{ $dmb-&gt;calc_time_time([$hbeg,$mbeg,$sbeg],$t2) };</td></tr>
<tr><td class="h"><a name="3592"></a>3592</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3593"></a>3593</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($h &lt; $hbeg  ||</td></tr>
<tr><td class="h"><a name="3594"></a>3594</td><td></td><td></td><td></td><td></td><td class="s">               ($h == $hbeg  &amp;&amp;  $mn &lt; $mbeg)  ||</td></tr>
<tr><td class="h"><a name="3595"></a>3595</td><td></td><td></td><td></td><td></td><td class="s">               ($h == $hbeg  &amp;&amp;  $mn == $mbeg  &amp;&amp;  $s &lt; $sbeg)) {</td></tr>
<tr><td class="h"><a name="3596"></a>3596</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3597"></a>3597</td><td></td><td></td><td></td><td></td><td class="s">         # We've gone back past the start of the business day.</td></tr>
<tr><td class="h"><a name="3598"></a>3598</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3599"></a>3599</td><td></td><td></td><td></td><td></td><td class="s">         my $t2      = $dmb-&gt;calc_time_time([$hbeg,$mbeg,$sbeg],[$h,$mn,$s],1);</td></tr>
<tr><td class="h"><a name="3600"></a>3600</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3601"></a>3601</td><td></td><td></td><td></td><td></td><td class="s">         while (1) {</td></tr>
<tr><td class="h"><a name="3602"></a>3602</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d) = @{ $dmb-&gt;calc_date_days([$y,$m,$d],-1) };</td></tr>
<tr><td class="h"><a name="3603"></a>3603</td><td></td><td></td><td></td><td></td><td class="s">            last  if ($self-&gt;__is_business_day([$y,$m,$d,$h,$mn,$s]));</td></tr>
<tr><td class="h"><a name="3604"></a>3604</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="3605"></a>3605</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3606"></a>3606</td><td></td><td></td><td></td><td></td><td class="s">         ($h,$mn,$s) = @{ $dmb-&gt;calc_time_time([$hend,$mend,$send],$t2,1) };</td></tr>
<tr><td class="h"><a name="3607"></a>3607</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3608"></a>3608</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3609"></a>3609</td><td></td><td></td><td></td><td></td><td class="s">      # Now make sure that the date is valid within DST constraints.</td></tr>
<tr><td class="h"><a name="3610"></a>3610</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3611"></a>3611</td><td></td><td></td><td></td><td></td><td class="s">      my $force = ( ($dd &gt; 0  ||  $dh &gt; 0  ||  $dmn &gt; 0  ||  $ds &gt; 0) ? 1 : -1 );</td></tr>
<tr><td class="h"><a name="3612"></a>3612</td><td></td><td></td><td></td><td></td><td class="s">      my($off,$abb);</td></tr>
<tr><td class="h"><a name="3613"></a>3613</td><td></td><td></td><td></td><td></td><td class="s">      ($date,$off,$isdst,$abb) =</td></tr>
<tr><td class="h"><a name="3614"></a>3614</td><td></td><td></td><td></td><td></td><td class="s">        $self-&gt;_calc_date_check_dst([$y,$m,$d,$h,$mn,$s],$tz,$isdst,$force);</td></tr>
<tr><td class="h"><a name="3615"></a>3615</td><td></td><td></td><td></td><td></td><td class="s">      return (0,$date,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3616"></a>3616</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3617"></a>3617</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3618"></a>3618</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3619"></a>3619</td><td></td><td></td><td></td><td></td><td class="s">      # Convert to GTM</td></tr>
<tr><td class="h"><a name="3620"></a>3620</td><td></td><td></td><td></td><td></td><td class="s">      # Do the calculation</td></tr>
<tr><td class="h"><a name="3621"></a>3621</td><td></td><td></td><td></td><td></td><td class="s">      # Convert back</td></tr>
<tr><td class="h"><a name="3622"></a>3622</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3623"></a>3623</td><td></td><td></td><td></td><td></td><td class="s">      my ($dd,$dh,$dm,$ds) = @$delta;   # $dd is always 0</td></tr>
<tr><td class="h"><a name="3624"></a>3624</td><td></td><td></td><td></td><td></td><td class="s">      my $del              = [$dh,$dm,$ds];</td></tr>
<tr><td class="h"><a name="3625"></a>3625</td><td></td><td></td><td></td><td></td><td class="s">      my ($err,$offset,$abbrev);</td></tr>
<tr><td class="h"><a name="3626"></a>3626</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3627"></a>3627</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3628"></a>3628</td><td></td><td></td><td></td><td></td><td class="s">        $dmt-&gt;_convert('__calc_date_delta_exact',$date,$tz,'GMT',$isdst);</td></tr>
<tr><td class="h"><a name="3629"></a>3629</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3630"></a>3630</td><td></td><td></td><td></td><td></td><td class="s">      $date                               = $dmb-&gt;calc_date_time($date,$del,0);</td></tr>
<tr><td class="h"><a name="3631"></a>3631</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3632"></a>3632</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date,$offset,$isdst,$abbrev) =</td></tr>
<tr><td class="h"><a name="3633"></a>3633</td><td></td><td></td><td></td><td></td><td class="s">        $dmt-&gt;_convert('__calc_date_delta_exact',$date,'GMT',$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3634"></a>3634</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3635"></a>3635</td><td></td><td></td><td></td><td></td><td class="s">      return($err,$date,$offset,$isdst,$abbrev);</td></tr>
<tr><td class="h"><a name="3636"></a>3636</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3637"></a>3637</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3638"></a>3638</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3639"></a>3639</td><td></td><td></td><td></td><td></td><td class="s"># This checks to see which time (STD or DST) a date is in.  It checks</td></tr>
<tr><td class="h"><a name="3640"></a>3640</td><td></td><td></td><td></td><td></td><td class="s"># $isdst first, and the other value (1-$isdst) second.</td></tr>
<tr><td class="h"><a name="3641"></a>3641</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3642"></a>3642</td><td></td><td></td><td></td><td></td><td class="s"># If the date is found in either time, it is returned.</td></tr>
<tr><td class="h"><a name="3643"></a>3643</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3644"></a>3644</td><td></td><td></td><td></td><td></td><td class="s"># If the date is NOT found, then we got here by adding/subtracting 1 day</td></tr>
<tr><td class="h"><a name="3645"></a>3645</td><td></td><td></td><td></td><td></td><td class="s"># from a different value, and we've obtained an invalid value.  In this</td></tr>
<tr><td class="h"><a name="3646"></a>3646</td><td></td><td></td><td></td><td></td><td class="s"># case, if $force = 0, then return nothing.</td></tr>
<tr><td class="h"><a name="3647"></a>3647</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3648"></a>3648</td><td></td><td></td><td></td><td></td><td class="s"># If $force = 1, then go to the previous day and add 24 hours.  If force</td></tr>
<tr><td class="h"><a name="3649"></a>3649</td><td></td><td></td><td></td><td></td><td class="s"># is -1, then go to the next day and subtract 24 hours.</td></tr>
<tr><td class="h"><a name="3650"></a>3650</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3651"></a>3651</td><td></td><td></td><td></td><td></td><td class="s"># Returns:</td></tr>
<tr><td class="h"><a name="3652"></a>3652</td><td></td><td></td><td></td><td></td><td class="s">#   ($date,$off,$isdst,$abb)</td></tr>
<tr><td class="h"><a name="3653"></a>3653</td><td></td><td></td><td></td><td></td><td class="s"># or</td></tr>
<tr><td class="h"><a name="3654"></a>3654</td><td></td><td></td><td></td><td></td><td class="s">#   (undef)</td></tr>
<tr><td class="h"><a name="3655"></a>3655</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="3656"></a>3656</td><td></td><td></td><td></td><td></td><td class="s">sub _calc_date_check_dst {</td></tr>
<tr><td class="h"><a name="3657"></a>3657</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$tz,$isdst,$force) = @_;</td></tr>
<tr><td class="h"><a name="3658"></a>3658</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3659"></a>3659</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3660"></a>3660</td><td></td><td></td><td></td><td></td><td class="s">   my($abb,$off,$err);</td></tr>
<tr><td class="h"><a name="3661"></a>3661</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3662"></a>3662</td><td></td><td></td><td></td><td></td><td class="s">   # Try the date as is in both ISDST and 1-ISDST times</td></tr>
<tr><td class="h"><a name="3663"></a>3663</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3664"></a>3664</td><td></td><td></td><td></td><td></td><td class="s">   my $per = $dmt-&gt;date_period($date,$tz,1,$isdst);</td></tr>
<tr><td class="h"><a name="3665"></a>3665</td><td></td><td></td><td></td><td></td><td class="s">   if ($per) {</td></tr>
<tr><td class="h"><a name="3666"></a>3666</td><td></td><td></td><td></td><td></td><td class="s">      $abb   = $$per[4];</td></tr>
<tr><td class="h"><a name="3667"></a>3667</td><td></td><td></td><td></td><td></td><td class="s">      $off   = $$per[3];</td></tr>
<tr><td class="h"><a name="3668"></a>3668</td><td></td><td></td><td></td><td></td><td class="s">      return($date,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3669"></a>3669</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3670"></a>3670</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3671"></a>3671</td><td></td><td></td><td></td><td></td><td class="s">   $per = $dmt-&gt;date_period($date,$tz,1,1-$isdst);</td></tr>
<tr><td class="h"><a name="3672"></a>3672</td><td></td><td></td><td></td><td></td><td class="s">   if ($per) {</td></tr>
<tr><td class="h"><a name="3673"></a>3673</td><td></td><td></td><td></td><td></td><td class="s">      $isdst = 1-$isdst;</td></tr>
<tr><td class="h"><a name="3674"></a>3674</td><td></td><td></td><td></td><td></td><td class="s">      $abb   = $$per[4];</td></tr>
<tr><td class="h"><a name="3675"></a>3675</td><td></td><td></td><td></td><td></td><td class="s">      $off   = $$per[3];</td></tr>
<tr><td class="h"><a name="3676"></a>3676</td><td></td><td></td><td></td><td></td><td class="s">      return($date,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3677"></a>3677</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3678"></a>3678</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3679"></a>3679</td><td></td><td></td><td></td><td></td><td class="s">   # If we made it here, the date is invalid in this timezone.</td></tr>
<tr><td class="h"><a name="3680"></a>3680</td><td></td><td></td><td></td><td></td><td class="s">   # Either return undef, or add/subtract a day from the date</td></tr>
<tr><td class="h"><a name="3681"></a>3681</td><td></td><td></td><td></td><td></td><td class="s">   # and find out what time period we're in (all we care about</td></tr>
<tr><td class="h"><a name="3682"></a>3682</td><td></td><td></td><td></td><td></td><td class="s">   # is the ISDST value).</td></tr>
<tr><td class="h"><a name="3683"></a>3683</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3684"></a>3684</td><td></td><td></td><td></td><td></td><td class="s">   if (! $force) {</td></tr>
<tr><td class="h"><a name="3685"></a>3685</td><td></td><td></td><td></td><td></td><td class="s">      return(undef);</td></tr>
<tr><td class="h"><a name="3686"></a>3686</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3687"></a>3687</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3688"></a>3688</td><td></td><td></td><td></td><td></td><td class="s">   my($dd);</td></tr>
<tr><td class="h"><a name="3689"></a>3689</td><td></td><td></td><td></td><td></td><td class="s">   if ($force &gt; 0) {</td></tr>
<tr><td class="h"><a name="3690"></a>3690</td><td></td><td></td><td></td><td></td><td class="s">      $date = $dmb-&gt;calc_date_days($date,-1);</td></tr>
<tr><td class="h"><a name="3691"></a>3691</td><td></td><td></td><td></td><td></td><td class="s">      $dd   = 1;</td></tr>
<tr><td class="h"><a name="3692"></a>3692</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3693"></a>3693</td><td></td><td></td><td></td><td></td><td class="s">      $date = $dmb-&gt;calc_date_days($date,+1);</td></tr>
<tr><td class="h"><a name="3694"></a>3694</td><td></td><td></td><td></td><td></td><td class="s">      $dd   = -1;</td></tr>
<tr><td class="h"><a name="3695"></a>3695</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3696"></a>3696</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3697"></a>3697</td><td></td><td></td><td></td><td></td><td class="s">   $per     = $dmt-&gt;date_period($date,$tz,1,$isdst);</td></tr>
<tr><td class="h"><a name="3698"></a>3698</td><td></td><td></td><td></td><td></td><td class="s">   $isdst   = (1-$isdst)  if (! $per);</td></tr>
<tr><td class="h"><a name="3699"></a>3699</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3700"></a>3700</td><td></td><td></td><td></td><td></td><td class="s">   # Now, convert it to GMT, add/subtract 24 hours, and convert</td></tr>
<tr><td class="h"><a name="3701"></a>3701</td><td></td><td></td><td></td><td></td><td class="s">   # it back.</td></tr>
<tr><td class="h"><a name="3702"></a>3702</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3703"></a>3703</td><td></td><td></td><td></td><td></td><td class="s">   ($err,$date,$off,$isdst,$abb) = $dmt-&gt;convert_to_gmt($date,$tz,$isdst);</td></tr>
<tr><td class="h"><a name="3704"></a>3704</td><td></td><td></td><td></td><td></td><td class="s">   $date                         = $dmb-&gt;calc_date_days($date,$dd);</td></tr>
<tr><td class="h"><a name="3705"></a>3705</td><td></td><td></td><td></td><td></td><td class="s">   ($err,$date,$off,$isdst,$abb) = $dmt-&gt;convert_from_gmt($date,$tz);</td></tr>
<tr><td class="h"><a name="3706"></a>3706</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3707"></a>3707</td><td></td><td></td><td></td><td></td><td class="s">   return($date,$off,$isdst,$abb);</td></tr>
<tr><td class="h"><a name="3708"></a>3708</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3709"></a>3709</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3710"></a>3710</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="3711"></a>3711</td><td></td><td></td><td></td><td></td><td class="s"># MISC METHODS</td></tr>
<tr><td class="h"><a name="3712"></a>3712</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3713"></a>3713</td><td></td><td></td><td></td><td></td><td class="s">sub secs_since_1970_GMT {</td></tr>
<tr><td class="h"><a name="3714"></a>3714</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$secs) = @_;</td></tr>
<tr><td class="h"><a name="3715"></a>3715</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3716"></a>3716</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3717"></a>3717</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3718"></a>3718</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3719"></a>3719</td><td></td><td></td><td></td><td></td><td class="s">   if (defined $secs) {</td></tr>
<tr><td class="h"><a name="3720"></a>3720</td><td></td><td></td><td></td><td></td><td class="s">      my $date     = $dmb-&gt;secs_since_1970($secs);</td></tr>
<tr><td class="h"><a name="3721"></a>3721</td><td></td><td></td><td></td><td></td><td class="s">      my $err;</td></tr>
<tr><td class="h"><a name="3722"></a>3722</td><td></td><td></td><td></td><td></td><td class="s">      ($err,$date) = $dmt-&gt;convert_from_gmt($date);</td></tr>
<tr><td class="h"><a name="3723"></a>3723</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if ($err);</td></tr>
<tr><td class="h"><a name="3724"></a>3724</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="3725"></a>3725</td><td></td><td></td><td></td><td></td><td class="s">      return 0;</td></tr>
<tr><td class="h"><a name="3726"></a>3726</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3727"></a>3727</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3728"></a>3728</td><td></td><td></td><td></td><td></td><td class="s">   my @date = $self-&gt;value('gmt');</td></tr>
<tr><td class="h"><a name="3729"></a>3729</td><td></td><td></td><td></td><td></td><td class="s">   $secs    = $dmb-&gt;secs_since_1970(\@date);</td></tr>
<tr><td class="h"><a name="3730"></a>3730</td><td></td><td></td><td></td><td></td><td class="s">   return $secs;</td></tr>
<tr><td class="h"><a name="3731"></a>3731</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3732"></a>3732</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3733"></a>3733</td><td></td><td></td><td></td><td></td><td class="s">sub week_of_year {</td></tr>
<tr><td class="h"><a name="3734"></a>3734</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$first) = @_;</td></tr>
<tr><td class="h"><a name="3735"></a>3735</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3736"></a>3736</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [week_of_year] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3737"></a>3737</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3738"></a>3738</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3739"></a>3739</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3740"></a>3740</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3741"></a>3741</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3742"></a>3742</td><td></td><td></td><td></td><td></td><td class="s">   my $date     = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="3743"></a>3743</td><td></td><td></td><td></td><td></td><td class="s">   my $y        = $$date[0];</td></tr>
<tr><td class="h"><a name="3744"></a>3744</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3745"></a>3745</td><td></td><td></td><td></td><td></td><td class="s">   my($day,$dow,$doy,$f);</td></tr>
<tr><td class="h"><a name="3746"></a>3746</td><td></td><td></td><td></td><td></td><td class="s">   $doy = $dmb-&gt;day_of_year($date);</td></tr>
<tr><td class="h"><a name="3747"></a>3747</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3748"></a>3748</td><td></td><td></td><td></td><td></td><td class="s">   # The date in January which must belong to the first week, and</td></tr>
<tr><td class="h"><a name="3749"></a>3749</td><td></td><td></td><td></td><td></td><td class="s">   # it's DayOfWeek.</td></tr>
<tr><td class="h"><a name="3750"></a>3750</td><td></td><td></td><td></td><td></td><td class="s">   if ($dmb-&gt;_config('jan1week1')) {</td></tr>
<tr><td class="h"><a name="3751"></a>3751</td><td></td><td></td><td></td><td></td><td class="s">      $day=1;</td></tr>
<tr><td class="h"><a name="3752"></a>3752</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="3753"></a>3753</td><td></td><td></td><td></td><td></td><td class="s">      $day=4;</td></tr>
<tr><td class="h"><a name="3754"></a>3754</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3755"></a>3755</td><td></td><td></td><td></td><td></td><td class="s">   $dow = $dmb-&gt;day_of_week([$y,1,$day]);</td></tr>
<tr><td class="h"><a name="3756"></a>3756</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3757"></a>3757</td><td></td><td></td><td></td><td></td><td class="s">   # The start DayOfWeek. If $first is passed in, use it. Otherwise,</td></tr>
<tr><td class="h"><a name="3758"></a>3758</td><td></td><td></td><td></td><td></td><td class="s">   # use FirstDay.</td></tr>
<tr><td class="h"><a name="3759"></a>3759</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3760"></a>3760</td><td></td><td></td><td></td><td></td><td class="s">   if (! $first) {</td></tr>
<tr><td class="h"><a name="3761"></a>3761</td><td></td><td></td><td></td><td></td><td class="s">      $first = $dmb-&gt;_config('firstday');</td></tr>
<tr><td class="h"><a name="3762"></a>3762</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3763"></a>3763</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3764"></a>3764</td><td></td><td></td><td></td><td></td><td class="s">   # Find the pseudo-date of the first day of the first week (it may</td></tr>
<tr><td class="h"><a name="3765"></a>3765</td><td></td><td></td><td></td><td></td><td class="s">   # be negative meaning it occurs last year).</td></tr>
<tr><td class="h"><a name="3766"></a>3766</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3767"></a>3767</td><td></td><td></td><td></td><td></td><td class="s">   $first  -= 7  if ($first &gt; $dow);</td></tr>
<tr><td class="h"><a name="3768"></a>3768</td><td></td><td></td><td></td><td></td><td class="s">   $day    -= ($dow-$first);</td></tr>
<tr><td class="h"><a name="3769"></a>3769</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3770"></a>3770</td><td></td><td></td><td></td><td></td><td class="s">   return 0  if ($day&gt;$doy);    # Day is in last week of previous year</td></tr>
<tr><td class="h"><a name="3771"></a>3771</td><td></td><td></td><td></td><td></td><td class="s">   return (($doy-$day)/7 + 1);</td></tr>
<tr><td class="h"><a name="3772"></a>3772</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3773"></a>3773</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3774"></a>3774</td><td></td><td></td><td></td><td></td><td class="s">sub complete {</td></tr>
<tr><td class="h"><a name="3775"></a>3775</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$field) = @_;</td></tr>
<tr><td class="h"><a name="3776"></a>3776</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3777"></a>3777</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [complete] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3778"></a>3778</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3779"></a>3779</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3780"></a>3780</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3781"></a>3781</td><td></td><td></td><td></td><td></td><td class="s">   if (! $field) {</td></tr>
<tr><td class="h"><a name="3782"></a>3782</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[1]  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3783"></a>3783</td><td></td><td></td><td></td><td></td><td class="s">                    ! $$self{'data'}{'def'}[2]  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3784"></a>3784</td><td></td><td></td><td></td><td></td><td class="s">                    ! $$self{'data'}{'def'}[3]  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3785"></a>3785</td><td></td><td></td><td></td><td></td><td class="s">                    ! $$self{'data'}{'def'}[4]  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3786"></a>3786</td><td></td><td></td><td></td><td></td><td class="s">                    ! $$self{'data'}{'def'}[5]);</td></tr>
<tr><td class="h"><a name="3787"></a>3787</td><td></td><td></td><td></td><td></td><td class="s">      return 0;</td></tr>
<tr><td class="h"><a name="3788"></a>3788</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3789"></a>3789</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3790"></a>3790</td><td></td><td></td><td></td><td></td><td class="s">   if ($field eq 'm') {</td></tr>
<tr><td class="h"><a name="3791"></a>3791</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[1]);</td></tr>
<tr><td class="h"><a name="3792"></a>3792</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3793"></a>3793</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3794"></a>3794</td><td></td><td></td><td></td><td></td><td class="s">   if ($field eq 'd') {</td></tr>
<tr><td class="h"><a name="3795"></a>3795</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[2]);</td></tr>
<tr><td class="h"><a name="3796"></a>3796</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3797"></a>3797</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3798"></a>3798</td><td></td><td></td><td></td><td></td><td class="s">   if ($field eq 'h') {</td></tr>
<tr><td class="h"><a name="3799"></a>3799</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[3]);</td></tr>
<tr><td class="h"><a name="3800"></a>3800</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3801"></a>3801</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3802"></a>3802</td><td></td><td></td><td></td><td></td><td class="s">   if ($field eq 'mn') {</td></tr>
<tr><td class="h"><a name="3803"></a>3803</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[4]);</td></tr>
<tr><td class="h"><a name="3804"></a>3804</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3805"></a>3805</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3806"></a>3806</td><td></td><td></td><td></td><td></td><td class="s">   if ($field eq 's') {</td></tr>
<tr><td class="h"><a name="3807"></a>3807</td><td></td><td></td><td></td><td></td><td class="s">      return 1  if (! $$self{'data'}{'def'}[5]);</td></tr>
<tr><td class="h"><a name="3808"></a>3808</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3809"></a>3809</td><td></td><td></td><td></td><td></td><td class="s">   return 0;</td></tr>
<tr><td class="h"><a name="3810"></a>3810</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3811"></a>3811</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3812"></a>3812</td><td></td><td></td><td></td><td></td><td class="s">sub convert {</td></tr>
<tr><td class="h"><a name="3813"></a>3813</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$zone) = @_;</td></tr>
<tr><td class="h"><a name="3814"></a>3814</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3815"></a>3815</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [convert] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3816"></a>3816</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="3817"></a>3817</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3818"></a>3818</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3819"></a>3819</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3820"></a>3820</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3821"></a>3821</td><td></td><td></td><td></td><td></td><td class="s">   my $zonename = $dmt-&gt;_zone($zone);</td></tr>
<tr><td class="h"><a name="3822"></a>3822</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3823"></a>3823</td><td></td><td></td><td></td><td></td><td class="s">   if (! $zonename) {</td></tr>
<tr><td class="h"><a name="3824"></a>3824</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = &quot;[convert] Unable to determine timezone: $zone&quot;;</td></tr>
<tr><td class="h"><a name="3825"></a>3825</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="3826"></a>3826</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3827"></a>3827</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3828"></a>3828</td><td></td><td></td><td></td><td></td><td class="s">   my $date0       = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="3829"></a>3829</td><td></td><td></td><td></td><td></td><td class="s">   my $zone0       = $$self{'data'}{'tz'};</td></tr>
<tr><td class="h"><a name="3830"></a>3830</td><td></td><td></td><td></td><td></td><td class="s">   my $isdst0      = $$self{'data'}{'isdst'};</td></tr>
<tr><td class="h"><a name="3831"></a>3831</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3832"></a>3832</td><td></td><td></td><td></td><td></td><td class="s">   my($err,$date,$off,$isdst,$abb) = $dmt-&gt;convert($date0,$zone0,$zonename,$isdst0);</td></tr>
<tr><td class="h"><a name="3833"></a>3833</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3834"></a>3834</td><td></td><td></td><td></td><td></td><td class="s">   if ($err) {</td></tr>
<tr><td class="h"><a name="3835"></a>3835</td><td></td><td></td><td></td><td></td><td class="s">      $$self{'err'} = '[convert] Unable to convert date to new timezone';</td></tr>
<tr><td class="h"><a name="3836"></a>3836</td><td></td><td></td><td></td><td></td><td class="s">      return 1;</td></tr>
<tr><td class="h"><a name="3837"></a>3837</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3838"></a>3838</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3839"></a>3839</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_init();</td></tr>
<tr><td class="h"><a name="3840"></a>3840</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'date'}   = $date;</td></tr>
<tr><td class="h"><a name="3841"></a>3841</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'tz'}     = $zonename;</td></tr>
<tr><td class="h"><a name="3842"></a>3842</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'isdst'}  = $isdst;</td></tr>
<tr><td class="h"><a name="3843"></a>3843</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'offset'} = $off;</td></tr>
<tr><td class="h"><a name="3844"></a>3844</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'abb'}    = $abb;</td></tr>
<tr><td class="h"><a name="3845"></a>3845</td><td></td><td></td><td></td><td></td><td class="s">   $$self{'data'}{'set'}    = 1;</td></tr>
<tr><td class="h"><a name="3846"></a>3846</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3847"></a>3847</td><td></td><td></td><td></td><td></td><td class="s">   return 0;</td></tr>
<tr><td class="h"><a name="3848"></a>3848</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3849"></a>3849</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3850"></a>3850</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="3851"></a>3851</td><td></td><td></td><td></td><td></td><td class="s"># BUSINESS DAY METHODS</td></tr>
<tr><td class="h"><a name="3852"></a>3852</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3853"></a>3853</td><td></td><td></td><td></td><td></td><td class="s">sub is_business_day {</td></tr>
<tr><td class="h"><a name="3854"></a>3854</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$checktime) = @_;</td></tr>
<tr><td class="h"><a name="3855"></a>3855</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3856"></a>3856</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [is_business_day] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3857"></a>3857</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3858"></a>3858</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3859"></a>3859</td><td></td><td></td><td></td><td></td><td class="s">   my $date             = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="3860"></a>3860</td><td></td><td></td><td></td><td></td><td class="s">   return $self-&gt;__is_business_day($date,$checktime);</td></tr>
<tr><td class="h"><a name="3861"></a>3861</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3862"></a>3862</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3863"></a>3863</td><td></td><td></td><td></td><td></td><td class="s">sub __is_business_day {</td></tr>
<tr><td class="h"><a name="3864"></a>3864</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$date,$checktime) = @_;</td></tr>
<tr><td class="h"><a name="3865"></a>3865</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s) = @$date;</td></tr>
<tr><td class="h"><a name="3866"></a>3866</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3867"></a>3867</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3868"></a>3868</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3869"></a>3869</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3870"></a>3870</td><td></td><td></td><td></td><td></td><td class="s">   # Return 0 if it's a weekend.</td></tr>
<tr><td class="h"><a name="3871"></a>3871</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3872"></a>3872</td><td></td><td></td><td></td><td></td><td class="s">   my $dow = $dmb-&gt;day_of_week([$y,$m,$d]);</td></tr>
<tr><td class="h"><a name="3873"></a>3873</td><td></td><td></td><td></td><td></td><td class="s">   return 0  if ($dow &lt; $dmb-&gt;_config('workweekbeg')  ||</td></tr>
<tr><td class="h"><a name="3874"></a>3874</td><td></td><td></td><td></td><td></td><td class="s">                 $dow &gt; $dmb-&gt;_config('workweekend'));</td></tr>
<tr><td class="h"><a name="3875"></a>3875</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3876"></a>3876</td><td></td><td></td><td></td><td></td><td class="s">   # Return 0 if it's not during work hours (and we're checking</td></tr>
<tr><td class="h"><a name="3877"></a>3877</td><td></td><td></td><td></td><td></td><td class="s">   # for that).</td></tr>
<tr><td class="h"><a name="3878"></a>3878</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3879"></a>3879</td><td></td><td></td><td></td><td></td><td class="s">   if ($checktime  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3880"></a>3880</td><td></td><td></td><td></td><td></td><td class="s">       ! $dmb-&gt;_config('workday24hr')) {</td></tr>
<tr><td class="h"><a name="3881"></a>3881</td><td></td><td></td><td></td><td></td><td class="s">      my $t  = $dmb-&gt;join('hms',[$h,$mn,$s]);</td></tr>
<tr><td class="h"><a name="3882"></a>3882</td><td></td><td></td><td></td><td></td><td class="s">      my $t0 = $dmb-&gt;join('hms',$$dmb{'data'}{'calc'}{'workdaybeg'});</td></tr>
<tr><td class="h"><a name="3883"></a>3883</td><td></td><td></td><td></td><td></td><td class="s">      my $t1 = $dmb-&gt;join('hms',$$dmb{'data'}{'calc'}{'workdayend'});</td></tr>
<tr><td class="h"><a name="3884"></a>3884</td><td></td><td></td><td></td><td></td><td class="s">      return 0  if ($t lt $t0  ||  $t gt $t1);</td></tr>
<tr><td class="h"><a name="3885"></a>3885</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3886"></a>3886</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3887"></a>3887</td><td></td><td></td><td></td><td></td><td class="s">   # Check for holidays</td></tr>
<tr><td class="h"><a name="3888"></a>3888</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3889"></a>3889</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holidays($y,2)  unless ($$dmb{'data'}{'init_holidays'});</td></tr>
<tr><td class="h"><a name="3890"></a>3890</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3891"></a>3891</td><td></td><td></td><td></td><td></td><td class="s">   return 0  if (exists $$dmb{'data'}{'holidays'}{'dates'}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3892"></a>3892</td><td></td><td></td><td></td><td></td><td class="s">                 exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3893"></a>3893</td><td></td><td></td><td></td><td></td><td class="s">                 exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3894"></a>3894</td><td></td><td></td><td></td><td></td><td class="s">                 exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0});</td></tr>
<tr><td class="h"><a name="3895"></a>3895</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3896"></a>3896</td><td></td><td></td><td></td><td></td><td class="s">   return 1;</td></tr>
<tr><td class="h"><a name="3897"></a>3897</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3898"></a>3898</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3899"></a>3899</td><td></td><td></td><td></td><td></td><td class="s">sub list_holidays {</td></tr>
<tr><td class="h"><a name="3900"></a>3900</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$y) = @_;</td></tr>
<tr><td class="h"><a name="3901"></a>3901</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3902"></a>3902</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3903"></a>3903</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3904"></a>3904</td><td></td><td></td><td></td><td></td><td class="s">   $y = $dmt-&gt;_now('y',1)  if (! $y);</td></tr>
<tr><td class="h"><a name="3905"></a>3905</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holidays($y,2);</td></tr>
<tr><td class="h"><a name="3906"></a>3906</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3907"></a>3907</td><td></td><td></td><td></td><td></td><td class="s">   my @ret;</td></tr>
<tr><td class="h"><a name="3908"></a>3908</td><td></td><td></td><td></td><td></td><td class="s">   my @m = sort { $a &lt;=&gt; $b } keys %{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0} };</td></tr>
<tr><td class="h"><a name="3909"></a>3909</td><td></td><td></td><td></td><td></td><td class="s">   foreach my $m (@m) {</td></tr>
<tr><td class="h"><a name="3910"></a>3910</td><td></td><td></td><td></td><td></td><td class="s">      my @d = sort { $a &lt;=&gt; $b } keys %{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m} };</td></tr>
<tr><td class="h"><a name="3911"></a>3911</td><td></td><td></td><td></td><td></td><td class="s">      foreach my $d (@d) {</td></tr>
<tr><td class="h"><a name="3912"></a>3912</td><td></td><td></td><td></td><td></td><td class="s">         my $hol = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="3913"></a>3913</td><td></td><td></td><td></td><td></td><td class="s">         $hol-&gt;set('date',[$y,$m,$d,0,0,0]);</td></tr>
<tr><td class="h"><a name="3914"></a>3914</td><td></td><td></td><td></td><td></td><td class="s">         push(@ret,$hol);</td></tr>
<tr><td class="h"><a name="3915"></a>3915</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3916"></a>3916</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3917"></a>3917</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3918"></a>3918</td><td></td><td></td><td></td><td></td><td class="s">   return @ret;</td></tr>
<tr><td class="h"><a name="3919"></a>3919</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3920"></a>3920</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3921"></a>3921</td><td></td><td></td><td></td><td></td><td class="s">sub holiday {</td></tr>
<tr><td class="h"><a name="3922"></a>3922</td><td></td><td></td><td></td><td></td><td class="s">   my($self) = @_;</td></tr>
<tr><td class="h"><a name="3923"></a>3923</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3924"></a>3924</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [holiday] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3925"></a>3925</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3926"></a>3926</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3927"></a>3927</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3928"></a>3928</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3929"></a>3929</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3930"></a>3930</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d) = @{ $$self{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="3931"></a>3931</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holidays($y,2);</td></tr>
<tr><td class="h"><a name="3932"></a>3932</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3933"></a>3933</td><td></td><td></td><td></td><td></td><td class="s">   if (exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3934"></a>3934</td><td></td><td></td><td></td><td></td><td class="s">       exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}  &amp;&amp;</td></tr>
<tr><td class="h"><a name="3935"></a>3935</td><td></td><td></td><td></td><td></td><td class="s">       exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0}) {</td></tr>
<tr><td class="h"><a name="3936"></a>3936</td><td></td><td></td><td></td><td></td><td class="s">      my @tmp = @{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} };</td></tr>
<tr><td class="h"><a name="3937"></a>3937</td><td></td><td></td><td></td><td></td><td class="s">      if (wantarray) {</td></tr>
<tr><td class="h"><a name="3938"></a>3938</td><td></td><td></td><td></td><td></td><td class="s">         return ()  if (! @tmp);</td></tr>
<tr><td class="h"><a name="3939"></a>3939</td><td></td><td></td><td></td><td></td><td class="s">         return @tmp;</td></tr>
<tr><td class="h"><a name="3940"></a>3940</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="3941"></a>3941</td><td></td><td></td><td></td><td></td><td class="s">         return ''  if (! @tmp);</td></tr>
<tr><td class="h"><a name="3942"></a>3942</td><td></td><td></td><td></td><td></td><td class="s">         return $tmp[0];</td></tr>
<tr><td class="h"><a name="3943"></a>3943</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3944"></a>3944</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3945"></a>3945</td><td></td><td></td><td></td><td></td><td class="s">   return undef;</td></tr>
<tr><td class="h"><a name="3946"></a>3946</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3947"></a>3947</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3948"></a>3948</td><td></td><td></td><td></td><td></td><td class="s">sub next_business_day {</td></tr>
<tr><td class="h"><a name="3949"></a>3949</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$off,$checktime) = @_;</td></tr>
<tr><td class="h"><a name="3950"></a>3950</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3951"></a>3951</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [next_business_day] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3952"></a>3952</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3953"></a>3953</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3954"></a>3954</td><td></td><td></td><td></td><td></td><td class="s">   my $date                  = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="3955"></a>3955</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3956"></a>3956</td><td></td><td></td><td></td><td></td><td class="s">   $date = $self-&gt;__nextprev_business_day(0,$off,$checktime,$date);</td></tr>
<tr><td class="h"><a name="3957"></a>3957</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="3958"></a>3958</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3959"></a>3959</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3960"></a>3960</td><td></td><td></td><td></td><td></td><td class="s">sub prev_business_day {</td></tr>
<tr><td class="h"><a name="3961"></a>3961</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$off,$checktime) = @_;</td></tr>
<tr><td class="h"><a name="3962"></a>3962</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="3963"></a>3963</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [prev_business_day] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="3964"></a>3964</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="3965"></a>3965</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3966"></a>3966</td><td></td><td></td><td></td><td></td><td class="s">   my $date                  = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="3967"></a>3967</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3968"></a>3968</td><td></td><td></td><td></td><td></td><td class="s">   $date = $self-&gt;__nextprev_business_day(1,$off,$checktime,$date);</td></tr>
<tr><td class="h"><a name="3969"></a>3969</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="3970"></a>3970</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="3971"></a>3971</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3972"></a>3972</td><td></td><td></td><td></td><td></td><td class="s">sub __nextprev_business_day {</td></tr>
<tr><td class="h"><a name="3973"></a>3973</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$prev,$off,$checktime,$date) = @_;</td></tr>
<tr><td class="h"><a name="3974"></a>3974</td><td></td><td></td><td></td><td></td><td class="s">   my($y,$m,$d,$h,$mn,$s) = @$date;</td></tr>
<tr><td class="h"><a name="3975"></a>3975</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3976"></a>3976</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="3977"></a>3977</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="3978"></a>3978</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3979"></a>3979</td><td></td><td></td><td></td><td></td><td class="s">   # Get day 0</td></tr>
<tr><td class="h"><a name="3980"></a>3980</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3981"></a>3981</td><td></td><td></td><td></td><td></td><td class="s">   while (! $self-&gt;__is_business_day([$y,$m,$d,$h,$mn,$s],$checktime)) {</td></tr>
<tr><td class="h"><a name="3982"></a>3982</td><td></td><td></td><td></td><td></td><td class="s">      if ($checktime) {</td></tr>
<tr><td class="h"><a name="3983"></a>3983</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d,$h,$mn,$s) =</td></tr>
<tr><td class="h"><a name="3984"></a>3984</td><td></td><td></td><td></td><td></td><td class="s">           @{ $self-&gt;__next_prev([$y,$m,$d,$h,$mn,$s],1,undef,0,</td></tr>
<tr><td class="h"><a name="3985"></a>3985</td><td></td><td></td><td></td><td></td><td class="s">                                 $$dmb{'data'}{'calc'}{'workdaybeg'}) };</td></tr>
<tr><td class="h"><a name="3986"></a>3986</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="3987"></a>3987</td><td></td><td></td><td></td><td></td><td class="s">         # Move forward 1 day</td></tr>
<tr><td class="h"><a name="3988"></a>3988</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d)             = @{ $dmb-&gt;calc_date_days([$y,$m,$d],1) };</td></tr>
<tr><td class="h"><a name="3989"></a>3989</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="3990"></a>3990</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="3991"></a>3991</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3992"></a>3992</td><td></td><td></td><td></td><td></td><td class="s">   # Move $off days into the future/past</td></tr>
<tr><td class="h"><a name="3993"></a>3993</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="3994"></a>3994</td><td></td><td></td><td></td><td></td><td class="s">   while ($off &gt; 0) {</td></tr>
<tr><td class="h"><a name="3995"></a>3995</td><td></td><td></td><td></td><td></td><td class="s">      while (1) {</td></tr>
<tr><td class="h"><a name="3996"></a>3996</td><td></td><td></td><td></td><td></td><td class="s">         if ($prev) {</td></tr>
<tr><td class="h"><a name="3997"></a>3997</td><td></td><td></td><td></td><td></td><td class="s">            # Move backward 1 day</td></tr>
<tr><td class="h"><a name="3998"></a>3998</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d)             = @{ $dmb-&gt;calc_date_days([$y,$m,$d],-1) };</td></tr>
<tr><td class="h"><a name="3999"></a>3999</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4000"></a>4000</td><td></td><td></td><td></td><td></td><td class="s">            # Move forward 1 day</td></tr>
<tr><td class="h"><a name="4001"></a>4001</td><td></td><td></td><td></td><td></td><td class="s">            ($y,$m,$d)             = @{ $dmb-&gt;calc_date_days([$y,$m,$d],1) };</td></tr>
<tr><td class="h"><a name="4002"></a>4002</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4003"></a>4003</td><td></td><td></td><td></td><td></td><td class="s">         last  if ($self-&gt;__is_business_day([$y,$m,$d,$h,$mn,$s]));</td></tr>
<tr><td class="h"><a name="4004"></a>4004</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4005"></a>4005</td><td></td><td></td><td></td><td></td><td class="s">      $off--;</td></tr>
<tr><td class="h"><a name="4006"></a>4006</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4007"></a>4007</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4008"></a>4008</td><td></td><td></td><td></td><td></td><td class="s">   return [$y,$m,$d,$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="4009"></a>4009</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4010"></a>4010</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4011"></a>4011</td><td></td><td></td><td></td><td></td><td class="s">sub nearest_business_day {</td></tr>
<tr><td class="h"><a name="4012"></a>4012</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$tomorrow) = @_;</td></tr>
<tr><td class="h"><a name="4013"></a>4013</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="4014"></a>4014</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [nearest_business_day] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="4015"></a>4015</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="4016"></a>4016</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4017"></a>4017</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4018"></a>4018</td><td></td><td></td><td></td><td></td><td class="s">   my $date = $$self{'data'}{'date'};</td></tr>
<tr><td class="h"><a name="4019"></a>4019</td><td></td><td></td><td></td><td></td><td class="s">   $date    = $self-&gt;__nearest_business_day($tomorrow,$date);</td></tr>
<tr><td class="h"><a name="4020"></a>4020</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4021"></a>4021</td><td></td><td></td><td></td><td></td><td class="s">   # If @date is empty, the date is a business day and doesn't need</td></tr>
<tr><td class="h"><a name="4022"></a>4022</td><td></td><td></td><td></td><td></td><td class="s">   # to be changed.</td></tr>
<tr><td class="h"><a name="4023"></a>4023</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4024"></a>4024</td><td></td><td></td><td></td><td></td><td class="s">   return  if (! defined($date));</td></tr>
<tr><td class="h"><a name="4025"></a>4025</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4026"></a>4026</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;set('date',$date);</td></tr>
<tr><td class="h"><a name="4027"></a>4027</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4028"></a>4028</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4029"></a>4029</td><td></td><td></td><td></td><td></td><td class="s">sub __nearest_business_day {</td></tr>
<tr><td class="h"><a name="4030"></a>4030</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$tomorrow,$date) = @_;</td></tr>
<tr><td class="h"><a name="4031"></a>4031</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4032"></a>4032</td><td></td><td></td><td></td><td></td><td class="s">   # We're done if this is a business day</td></tr>
<tr><td class="h"><a name="4033"></a>4033</td><td></td><td></td><td></td><td></td><td class="s">   return undef  if ($self-&gt;__is_business_day($date,0));</td></tr>
<tr><td class="h"><a name="4034"></a>4034</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4035"></a>4035</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4036"></a>4036</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4037"></a>4037</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4038"></a>4038</td><td></td><td></td><td></td><td></td><td class="s">   $tomorrow = $dmb-&gt;_config('tomorrowfirst')  if (! defined $tomorrow);</td></tr>
<tr><td class="h"><a name="4039"></a>4039</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4040"></a>4040</td><td></td><td></td><td></td><td></td><td class="s">   my($a1,$a2);</td></tr>
<tr><td class="h"><a name="4041"></a>4041</td><td></td><td></td><td></td><td></td><td class="s">   if ($tomorrow) {</td></tr>
<tr><td class="h"><a name="4042"></a>4042</td><td></td><td></td><td></td><td></td><td class="s">      ($a1,$a2) = (1,-1);</td></tr>
<tr><td class="h"><a name="4043"></a>4043</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="4044"></a>4044</td><td></td><td></td><td></td><td></td><td class="s">      ($a1,$a2) = (-1,1);</td></tr>
<tr><td class="h"><a name="4045"></a>4045</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4046"></a>4046</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4047"></a>4047</td><td></td><td></td><td></td><td></td><td class="s">   my ($y,$m,$d,$h,$mn,$s) = @$date;</td></tr>
<tr><td class="h"><a name="4048"></a>4048</td><td></td><td></td><td></td><td></td><td class="s">   my ($y1,$m1,$d1) = ($y,$m,$d);</td></tr>
<tr><td class="h"><a name="4049"></a>4049</td><td></td><td></td><td></td><td></td><td class="s">   my ($y2,$m2,$d2) = ($y,$m,$d);</td></tr>
<tr><td class="h"><a name="4050"></a>4050</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4051"></a>4051</td><td></td><td></td><td></td><td></td><td class="s">   while (1) {</td></tr>
<tr><td class="h"><a name="4052"></a>4052</td><td></td><td></td><td></td><td></td><td class="s">      ($y1,$m1,$d1) = @{ $dmb-&gt;calc_date_days([$y1,$m1,$d1],$a1) };</td></tr>
<tr><td class="h"><a name="4053"></a>4053</td><td></td><td></td><td></td><td></td><td class="s">      if ($self-&gt;__is_business_day([$y1,$m1,$d1,$h,$mn,$s],0)) {</td></tr>
<tr><td class="h"><a name="4054"></a>4054</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = ($y1,$m1,$d1);</td></tr>
<tr><td class="h"><a name="4055"></a>4055</td><td></td><td></td><td></td><td></td><td class="s">         last;</td></tr>
<tr><td class="h"><a name="4056"></a>4056</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4057"></a>4057</td><td></td><td></td><td></td><td></td><td class="s">      ($y2,$m2,$d2) = @{ $dmb-&gt;calc_date_days([$y2,$m2,$d2],$a2) };</td></tr>
<tr><td class="h"><a name="4058"></a>4058</td><td></td><td></td><td></td><td></td><td class="s">      if ($self-&gt;__is_business_day([$y2,$m2,$d2,$h,$mn,$s],0)) {</td></tr>
<tr><td class="h"><a name="4059"></a>4059</td><td></td><td></td><td></td><td></td><td class="s">         ($y,$m,$d) = ($y2,$m2,$d2);</td></tr>
<tr><td class="h"><a name="4060"></a>4060</td><td></td><td></td><td></td><td></td><td class="s">         last;</td></tr>
<tr><td class="h"><a name="4061"></a>4061</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4062"></a>4062</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4063"></a>4063</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4064"></a>4064</td><td></td><td></td><td></td><td></td><td class="s">   return [$y,$m,$d,$h,$mn,$s];</td></tr>
<tr><td class="h"><a name="4065"></a>4065</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4066"></a>4066</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4067"></a>4067</td><td></td><td></td><td></td><td></td><td class="s"># We need to create all the objects which will be used to determine holidays.</td></tr>
<tr><td class="h"><a name="4068"></a>4068</td><td></td><td></td><td></td><td></td><td class="s"># By doing this once only, a lot of time is saved.</td></tr>
<tr><td class="h"><a name="4069"></a>4069</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="4070"></a>4070</td><td></td><td></td><td></td><td></td><td class="s">sub _holiday_objs {</td></tr>
<tr><td class="h"><a name="4071"></a>4071</td><td></td><td></td><td></td><td></td><td class="s">   my($self) = @_;</td></tr>
<tr><td class="h"><a name="4072"></a>4072</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4073"></a>4073</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4074"></a>4074</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4075"></a>4075</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'holidays'}{'init'} = 1;</td></tr>
<tr><td class="h"><a name="4076"></a>4076</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4077"></a>4077</td><td></td><td></td><td></td><td></td><td class="s">   # Go through all of the strings from the config file.</td></tr>
<tr><td class="h"><a name="4078"></a>4078</td><td></td><td></td><td></td><td></td><td class="s">   #</td></tr>
<tr><td class="h"><a name="4079"></a>4079</td><td></td><td></td><td></td><td></td><td class="s">   my (@str)      = @{ $$dmb{'data'}{'sections'}{'holidays'} };</td></tr>
<tr><td class="h"><a name="4080"></a>4080</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'holidays'}{'hols'} = [];</td></tr>
<tr><td class="h"><a name="4081"></a>4081</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4082"></a>4082</td><td></td><td></td><td></td><td></td><td class="s">   while (@str) {</td></tr>
<tr><td class="h"><a name="4083"></a>4083</td><td></td><td></td><td></td><td></td><td class="s">      my($string) = shift(@str);</td></tr>
<tr><td class="h"><a name="4084"></a>4084</td><td></td><td></td><td></td><td></td><td class="s">      my($name)   = shift(@str);</td></tr>
<tr><td class="h"><a name="4085"></a>4085</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4086"></a>4086</td><td></td><td></td><td></td><td></td><td class="s">      # If $string is a parse_date string AND it contains a year, we'll</td></tr>
<tr><td class="h"><a name="4087"></a>4087</td><td></td><td></td><td></td><td></td><td class="s">      # store the date as a holiday, but not store the holiday description</td></tr>
<tr><td class="h"><a name="4088"></a>4088</td><td></td><td></td><td></td><td></td><td class="s">      # so it never needs to be re-parsed.</td></tr>
<tr><td class="h"><a name="4089"></a>4089</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4090"></a>4090</td><td></td><td></td><td></td><td></td><td class="s">      my $date  = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4091"></a>4091</td><td></td><td></td><td></td><td></td><td class="s">      my $err   = $date-&gt;parse_date($string);</td></tr>
<tr><td class="h"><a name="4092"></a>4092</td><td></td><td></td><td></td><td></td><td class="s">      if (! $err) {</td></tr>
<tr><td class="h"><a name="4093"></a>4093</td><td></td><td></td><td></td><td></td><td class="s">         if ($$date{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4094"></a>4094</td><td></td><td></td><td></td><td></td><td class="s">            push(@{ $$dmb{'data'}{'holidays'}{'hols'} },$string,$name);</td></tr>
<tr><td class="h"><a name="4095"></a>4095</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4096"></a>4096</td><td></td><td></td><td></td><td></td><td class="s">            my($y,$m,$d) = @{ $$date{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="4097"></a>4097</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0}) {</td></tr>
<tr><td class="h"><a name="4098"></a>4098</td><td></td><td></td><td></td><td></td><td class="s">               push @{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} },$name;</td></tr>
<tr><td class="h"><a name="4099"></a>4099</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4100"></a>4100</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} = [ $name ];</td></tr>
<tr><td class="h"><a name="4101"></a>4101</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4102"></a>4102</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4103"></a>4103</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4104"></a>4104</td><td></td><td></td><td></td><td></td><td class="s">         next;</td></tr>
<tr><td class="h"><a name="4105"></a>4105</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4106"></a>4106</td><td></td><td></td><td></td><td></td><td class="s">      $date-&gt;err(1);</td></tr>
<tr><td class="h"><a name="4107"></a>4107</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4108"></a>4108</td><td></td><td></td><td></td><td></td><td class="s">      # If $string is a recurrence, we'll create a Recur object (which we</td></tr>
<tr><td class="h"><a name="4109"></a>4109</td><td></td><td></td><td></td><td></td><td class="s">      # only have to do once) and store it.</td></tr>
<tr><td class="h"><a name="4110"></a>4110</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4111"></a>4111</td><td></td><td></td><td></td><td></td><td class="s">      my $recur = $self-&gt;new_recur();</td></tr>
<tr><td class="h"><a name="4112"></a>4112</td><td></td><td></td><td></td><td></td><td class="s">      $recur-&gt;_holiday();</td></tr>
<tr><td class="h"><a name="4113"></a>4113</td><td></td><td></td><td></td><td></td><td class="s">      $err      = $recur-&gt;parse($string);</td></tr>
<tr><td class="h"><a name="4114"></a>4114</td><td></td><td></td><td></td><td></td><td class="s">      if (! $err) {</td></tr>
<tr><td class="h"><a name="4115"></a>4115</td><td></td><td></td><td></td><td></td><td class="s">         push(@{ $$dmb{'data'}{'holidays'}{'hols'} },$recur,$name);</td></tr>
<tr><td class="h"><a name="4116"></a>4116</td><td></td><td></td><td></td><td></td><td class="s">         next;</td></tr>
<tr><td class="h"><a name="4117"></a>4117</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4118"></a>4118</td><td></td><td></td><td></td><td></td><td class="s">      $recur-&gt;err(1);</td></tr>
<tr><td class="h"><a name="4119"></a>4119</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4120"></a>4120</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: invalid holiday description: $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4121"></a>4121</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4122"></a>4122</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4123"></a>4123</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4124"></a>4124</td><td></td><td></td><td></td><td></td><td class="s"># Make sure that holidays are set for a given year.</td></tr>
<tr><td class="h"><a name="4125"></a>4125</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="4126"></a>4126</td><td></td><td></td><td></td><td></td><td class="s">#   $$dmb{'data'}{'holidays'}{'years'}{$year} = 0   nothing done</td></tr>
<tr><td class="h"><a name="4127"></a>4127</td><td></td><td></td><td></td><td></td><td class="s">#                                               1   this year done</td></tr>
<tr><td class="h"><a name="4128"></a>4128</td><td></td><td></td><td></td><td></td><td class="s">#                                               2   both adjacent years done</td></tr>
<tr><td class="h"><a name="4129"></a>4129</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="4130"></a>4130</td><td></td><td></td><td></td><td></td><td class="s">sub _holidays {</td></tr>
<tr><td class="h"><a name="4131"></a>4131</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$year,$level) = @_;</td></tr>
<tr><td class="h"><a name="4132"></a>4132</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4133"></a>4133</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4134"></a>4134</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4135"></a>4135</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holiday_objs($year)  if (! $$dmb{'data'}{'holidays'}{'init'});</td></tr>
<tr><td class="h"><a name="4136"></a>4136</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4137"></a>4137</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'holidays'}{'years'}{$year} = 0</td></tr>
<tr><td class="h"><a name="4138"></a>4138</td><td></td><td></td><td></td><td></td><td class="s">     if (! exists $$dmb{'data'}{'holidays'}{'years'}{$year});</td></tr>
<tr><td class="h"><a name="4139"></a>4139</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4140"></a>4140</td><td></td><td></td><td></td><td></td><td class="s">   my $curr_level = $$dmb{'data'}{'holidays'}{'years'}{$year};</td></tr>
<tr><td class="h"><a name="4141"></a>4141</td><td></td><td></td><td></td><td></td><td class="s">   return  if ($curr_level &gt;= $level);</td></tr>
<tr><td class="h"><a name="4142"></a>4142</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'holidays'}{'years'}{$year} = $level;</td></tr>
<tr><td class="h"><a name="4143"></a>4143</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4144"></a>4144</td><td></td><td></td><td></td><td></td><td class="s">   # Parse the year</td></tr>
<tr><td class="h"><a name="4145"></a>4145</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4146"></a>4146</td><td></td><td></td><td></td><td></td><td class="s">   if ($curr_level == 0) {</td></tr>
<tr><td class="h"><a name="4147"></a>4147</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;_holidays_year($year);</td></tr>
<tr><td class="h"><a name="4148"></a>4148</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4149"></a>4149</td><td></td><td></td><td></td><td></td><td class="s">      return  if ($level == 1);</td></tr>
<tr><td class="h"><a name="4150"></a>4150</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4151"></a>4151</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4152"></a>4152</td><td></td><td></td><td></td><td></td><td class="s">   # Parse the years around it.</td></tr>
<tr><td class="h"><a name="4153"></a>4153</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4154"></a>4154</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holidays($year-1,1);</td></tr>
<tr><td class="h"><a name="4155"></a>4155</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_holidays($year+1,1);</td></tr>
<tr><td class="h"><a name="4156"></a>4156</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4157"></a>4157</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4158"></a>4158</td><td></td><td></td><td></td><td></td><td class="s">sub _holidays_year {</td></tr>
<tr><td class="h"><a name="4159"></a>4159</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$y) = @_;</td></tr>
<tr><td class="h"><a name="4160"></a>4160</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4161"></a>4161</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4162"></a>4162</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4163"></a>4163</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4164"></a>4164</td><td></td><td></td><td></td><td></td><td class="s">   # Get the objects and set them to use the new year. Also, get the</td></tr>
<tr><td class="h"><a name="4165"></a>4165</td><td></td><td></td><td></td><td></td><td class="s">   # range for recurrences.</td></tr>
<tr><td class="h"><a name="4166"></a>4166</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4167"></a>4167</td><td></td><td></td><td></td><td></td><td class="s">   my @hol      = @{ $$dmb{'data'}{'holidays'}{'hols'} };</td></tr>
<tr><td class="h"><a name="4168"></a>4168</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4169"></a>4169</td><td></td><td></td><td></td><td></td><td class="s">   my $beg      = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4170"></a>4170</td><td></td><td></td><td></td><td></td><td class="s">   $beg-&gt;set('date',[$y-1,12,1,0,0,0]);</td></tr>
<tr><td class="h"><a name="4171"></a>4171</td><td></td><td></td><td></td><td></td><td class="s">   my $end      = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4172"></a>4172</td><td></td><td></td><td></td><td></td><td class="s">   $end-&gt;set('date',[$y+1,2,1,0,0,0]);</td></tr>
<tr><td class="h"><a name="4173"></a>4173</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4174"></a>4174</td><td></td><td></td><td></td><td></td><td class="s">   # Get the date for each holiday.</td></tr>
<tr><td class="h"><a name="4175"></a>4175</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4176"></a>4176</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'init_holidays'} = 1;</td></tr>
<tr><td class="h"><a name="4177"></a>4177</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4178"></a>4178</td><td></td><td></td><td></td><td></td><td class="s">   while (@hol) {</td></tr>
<tr><td class="h"><a name="4179"></a>4179</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4180"></a>4180</td><td></td><td></td><td></td><td></td><td class="s">      my($obj)  = shift(@hol);</td></tr>
<tr><td class="h"><a name="4181"></a>4181</td><td></td><td></td><td></td><td></td><td class="s">      my($name) = shift(@hol);</td></tr>
<tr><td class="h"><a name="4182"></a>4182</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4183"></a>4183</td><td></td><td></td><td></td><td></td><td class="s">      $$dmb{'data'}{'tmpnow'} = [$y,1,1,0,0,0];</td></tr>
<tr><td class="h"><a name="4184"></a>4184</td><td></td><td></td><td></td><td></td><td class="s">      if (ref($obj)) {</td></tr>
<tr><td class="h"><a name="4185"></a>4185</td><td></td><td></td><td></td><td></td><td class="s">         # It's a recurrence</td></tr>
<tr><td class="h"><a name="4186"></a>4186</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4187"></a>4187</td><td></td><td></td><td></td><td></td><td class="s">         # If the recurrence has a date range built in, we won't override it.</td></tr>
<tr><td class="h"><a name="4188"></a>4188</td><td></td><td></td><td></td><td></td><td class="s">         # Otherwise, we'll only look for dates in this year.</td></tr>
<tr><td class="h"><a name="4189"></a>4189</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4190"></a>4190</td><td></td><td></td><td></td><td></td><td class="s">         if ($obj-&gt;start()  &amp;&amp;  $obj-&gt;end()) {</td></tr>
<tr><td class="h"><a name="4191"></a>4191</td><td></td><td></td><td></td><td></td><td class="s">            $obj-&gt;dates();</td></tr>
<tr><td class="h"><a name="4192"></a>4192</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4193"></a>4193</td><td></td><td></td><td></td><td></td><td class="s">            $obj-&gt;dates($beg,$end);</td></tr>
<tr><td class="h"><a name="4194"></a>4194</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4195"></a>4195</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4196"></a>4196</td><td></td><td></td><td></td><td></td><td class="s">         foreach my $i (keys %{ $$obj{'data'}{'dates'} }) {</td></tr>
<tr><td class="h"><a name="4197"></a>4197</td><td></td><td></td><td></td><td></td><td class="s">            next  if ($$obj{'data'}{'saved'}{$i});</td></tr>
<tr><td class="h"><a name="4198"></a>4198</td><td></td><td></td><td></td><td></td><td class="s">            my $date     = $$obj{'data'}{'dates'}{$i};</td></tr>
<tr><td class="h"><a name="4199"></a>4199</td><td></td><td></td><td></td><td></td><td class="s">            my($y,$m,$d) = @{ $$date{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="4200"></a>4200</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0}) {</td></tr>
<tr><td class="h"><a name="4201"></a>4201</td><td></td><td></td><td></td><td></td><td class="s">               push @{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} },$name;</td></tr>
<tr><td class="h"><a name="4202"></a>4202</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4203"></a>4203</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} = [$name];</td></tr>
<tr><td class="h"><a name="4204"></a>4204</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4205"></a>4205</td><td></td><td></td><td></td><td></td><td class="s">            $$obj{'data'}{'saved'}{$i} = 1;</td></tr>
<tr><td class="h"><a name="4206"></a>4206</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4207"></a>4207</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4208"></a>4208</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="4209"></a>4209</td><td></td><td></td><td></td><td></td><td class="s">         my $date = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4210"></a>4210</td><td></td><td></td><td></td><td></td><td class="s">         $date-&gt;parse_date($obj);</td></tr>
<tr><td class="h"><a name="4211"></a>4211</td><td></td><td></td><td></td><td></td><td class="s">         my($y,$m,$d) = @{ $$date{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="4212"></a>4212</td><td></td><td></td><td></td><td></td><td class="s">         if (exists $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0}) {</td></tr>
<tr><td class="h"><a name="4213"></a>4213</td><td></td><td></td><td></td><td></td><td class="s">            push @{ $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} },$name;</td></tr>
<tr><td class="h"><a name="4214"></a>4214</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4215"></a>4215</td><td></td><td></td><td></td><td></td><td class="s">            $$dmb{'data'}{'holidays'}{'dates'}{$y+0}{$m+0}{$d+0} = [$name];</td></tr>
<tr><td class="h"><a name="4216"></a>4216</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4217"></a>4217</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4218"></a>4218</td><td></td><td></td><td></td><td></td><td class="s">      $$dmb{'data'}{'tmpnow'} = [];</td></tr>
<tr><td class="h"><a name="4219"></a>4219</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4220"></a>4220</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4221"></a>4221</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'init_holidays'} = 0;</td></tr>
<tr><td class="h"><a name="4222"></a>4222</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4223"></a>4223</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4224"></a>4224</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="4225"></a>4225</td><td></td><td></td><td></td><td></td><td class="s"># PRINTF METHOD</td></tr>
<tr><td class="h"><a name="4226"></a>4226</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4227"></a>4227</td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 14µs within Date::Manip::Date::BEGIN@4227 which was called:
#    once (14µs+0s) by main::RUNTIME at <a href="Date-Manip-Date-pm-12-line.html#4544">line 4544</a></div></div>BEGIN {</td></tr>
<tr><td class="h"><a name="4228"></a>4228</td><td class="c3">1</td><td class="c3"><span title="Avg 5µs">5µs</span></td><td></td><td></td><td class="s">   my %pad_0  = map { $_,1 } qw ( Y m d H M S I j G W L U );</td></tr>
<tr><td class="h"><a name="4229"></a>4229</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">   my %pad_sp = map { $_,1 } qw ( y f e k i );</td></tr>
<tr><td class="h"><a name="4230"></a>4230</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">   my %hr     = map { $_,1 } qw ( H k I i );</td></tr>
<tr><td class="h"><a name="4231"></a>4231</td><td class="c3">1</td><td class="c3"><span title="Avg 1µs">1µs</span></td><td></td><td></td><td class="s">   my %dow    = map { $_,1 } qw ( v a A w );</td></tr>
<tr><td class="h"><a name="4232"></a>4232</td><td class="c3">1</td><td class="c3"><span title="Avg 7µs">7µs</span></td><td></td><td></td><td class="s">   my %num    = map { $_,1 } qw ( Y m d H M S y f e k I i j G W L U );</td></tr>
<tr><td class="h"><a name="4233"></a>4233</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4234"></a>4234</td><td></td><td></td><td></td><td></td><td class="s">   sub printf {</td></tr>
<tr><td class="h"><a name="4235"></a>4235</td><td></td><td></td><td></td><td></td><td class="s">      my($self,@in) = @_;</td></tr>
<tr><td class="h"><a name="4236"></a>4236</td><td></td><td></td><td></td><td></td><td class="s">      if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="4237"></a>4237</td><td></td><td></td><td></td><td></td><td class="s">         warn &quot;WARNING: [printf] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="4238"></a>4238</td><td></td><td></td><td></td><td></td><td class="s">         return undef;</td></tr>
<tr><td class="h"><a name="4239"></a>4239</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4240"></a>4240</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4241"></a>4241</td><td></td><td></td><td></td><td></td><td class="s">      my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4242"></a>4242</td><td></td><td></td><td></td><td></td><td class="s">      my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4243"></a>4243</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4244"></a>4244</td><td></td><td></td><td></td><td></td><td class="s">      my($y,$m,$d,$h,$mn,$s) = @{ $$self{'data'}{'date'} };</td></tr>
<tr><td class="h"><a name="4245"></a>4245</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4246"></a>4246</td><td></td><td></td><td></td><td></td><td class="s">      my(@out);</td></tr>
<tr><td class="h"><a name="4247"></a>4247</td><td></td><td></td><td></td><td></td><td class="s">      foreach my $in (@in) {</td></tr>
<tr><td class="h"><a name="4248"></a>4248</td><td></td><td></td><td></td><td></td><td class="s">         my $out       = '';</td></tr>
<tr><td class="h"><a name="4249"></a>4249</td><td></td><td></td><td></td><td></td><td class="s">         while ($in) {</td></tr>
<tr><td class="h"><a name="4250"></a>4250</td><td></td><td></td><td></td><td></td><td class="s">            last  if ($in eq '%');</td></tr>
<tr><td class="h"><a name="4251"></a>4251</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4252"></a>4252</td><td></td><td></td><td></td><td></td><td class="s">            # Everything up to the first '%'</td></tr>
<tr><td class="h"><a name="4253"></a>4253</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4254"></a>4254</td><td></td><td></td><td></td><td></td><td class="s">            if ($in =~ s/^([^%]+)//) {</td></tr>
<tr><td class="h"><a name="4255"></a>4255</td><td></td><td></td><td></td><td></td><td class="s">               $out .= $1;</td></tr>
<tr><td class="h"><a name="4256"></a>4256</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4257"></a>4257</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4258"></a>4258</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4259"></a>4259</td><td></td><td></td><td></td><td></td><td class="s">            # Extended formats: %&lt;...&gt;</td></tr>
<tr><td class="h"><a name="4260"></a>4260</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4261"></a>4261</td><td></td><td></td><td></td><td></td><td class="s">            if ($in =~ s/^%&lt;([^&gt;]+)&gt;//) {</td></tr>
<tr><td class="h"><a name="4262"></a>4262</td><td></td><td></td><td></td><td></td><td class="s">               my $f = $1;</td></tr>
<tr><td class="h"><a name="4263"></a>4263</td><td></td><td></td><td></td><td></td><td class="s">               my $val;</td></tr>
<tr><td class="h"><a name="4264"></a>4264</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4265"></a>4265</td><td></td><td></td><td></td><td></td><td class="s">               if      ($f =~ /^a=([1-7])$/) {</td></tr>
<tr><td class="h"><a name="4266"></a>4266</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'day_abb'}[$1-1];</td></tr>
<tr><td class="h"><a name="4267"></a>4267</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4268"></a>4268</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^v=([1-7])$/) {</td></tr>
<tr><td class="h"><a name="4269"></a>4269</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'day_char'}[$1-1];</td></tr>
<tr><td class="h"><a name="4270"></a>4270</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4271"></a>4271</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^A=([1-7])$/) {</td></tr>
<tr><td class="h"><a name="4272"></a>4272</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'day_name'}[$1-1];</td></tr>
<tr><td class="h"><a name="4273"></a>4273</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4274"></a>4274</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^p=([1-2])$/) {</td></tr>
<tr><td class="h"><a name="4275"></a>4275</td><td></td><td></td><td></td><td></td><td class="s">                  $val  = $$dmb{'data'}{'wordlist'}{'ampm'}[$1-1];</td></tr>
<tr><td class="h"><a name="4276"></a>4276</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4277"></a>4277</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^b=(0?[1-9]|1[0-2])$/) {</td></tr>
<tr><td class="h"><a name="4278"></a>4278</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'month_abb'}[$1-1];</td></tr>
<tr><td class="h"><a name="4279"></a>4279</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4280"></a>4280</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^B=(0?[1-9]|1[0-2])$/) {</td></tr>
<tr><td class="h"><a name="4281"></a>4281</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'month_name'}[$1-1];</td></tr>
<tr><td class="h"><a name="4282"></a>4282</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4283"></a>4283</td><td></td><td></td><td></td><td></td><td class="s">               } elsif ($f =~ /^E=(0?[1-9]|[1-4][0-9]|5[0-3])$/) {</td></tr>
<tr><td class="h"><a name="4284"></a>4284</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $$dmb{'data'}{'wordlist'}{'nth'}[$1-1];</td></tr>
<tr><td class="h"><a name="4285"></a>4285</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4286"></a>4286</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4287"></a>4287</td><td></td><td></td><td></td><td></td><td class="s">                  $val = '%&lt;' . $1 . '&gt;';</td></tr>
<tr><td class="h"><a name="4288"></a>4288</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4289"></a>4289</td><td></td><td></td><td></td><td></td><td class="s">               $out .= $val;</td></tr>
<tr><td class="h"><a name="4290"></a>4290</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4291"></a>4291</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4292"></a>4292</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4293"></a>4293</td><td></td><td></td><td></td><td></td><td class="s">            # Normals one-character formats</td></tr>
<tr><td class="h"><a name="4294"></a>4294</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4295"></a>4295</td><td></td><td></td><td></td><td></td><td class="s">            $in =~ s/^%(.)//s;</td></tr>
<tr><td class="h"><a name="4296"></a>4296</td><td></td><td></td><td></td><td></td><td class="s">            my $f = $1;</td></tr>
<tr><td class="h"><a name="4297"></a>4297</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4298"></a>4298</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $$self{'data'}{'f'}{$f}) {</td></tr>
<tr><td class="h"><a name="4299"></a>4299</td><td></td><td></td><td></td><td></td><td class="s">               $out .= $$self{'data'}{'f'}{$f};</td></tr>
<tr><td class="h"><a name="4300"></a>4300</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4301"></a>4301</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4302"></a>4302</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4303"></a>4303</td><td></td><td></td><td></td><td></td><td class="s">            my ($val,$pad,$len,$dow);</td></tr>
<tr><td class="h"><a name="4304"></a>4304</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4305"></a>4305</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $pad_0{$f}) {</td></tr>
<tr><td class="h"><a name="4306"></a>4306</td><td></td><td></td><td></td><td></td><td class="s">               $pad = '0';</td></tr>
<tr><td class="h"><a name="4307"></a>4307</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4308"></a>4308</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4309"></a>4309</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $pad_sp{$f}) {</td></tr>
<tr><td class="h"><a name="4310"></a>4310</td><td></td><td></td><td></td><td></td><td class="s">               $pad = ' ';</td></tr>
<tr><td class="h"><a name="4311"></a>4311</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4312"></a>4312</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4313"></a>4313</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'G'  ||  $f eq 'W') {</td></tr>
<tr><td class="h"><a name="4314"></a>4314</td><td></td><td></td><td></td><td></td><td class="s">               my($yy,$ww) = $dmb-&gt;_week_of_year(1,[$y,$m,$d]);</td></tr>
<tr><td class="h"><a name="4315"></a>4315</td><td></td><td></td><td></td><td></td><td class="s">               if ($f eq 'G') {</td></tr>
<tr><td class="h"><a name="4316"></a>4316</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $yy;</td></tr>
<tr><td class="h"><a name="4317"></a>4317</td><td></td><td></td><td></td><td></td><td class="s">                  $len = 4;</td></tr>
<tr><td class="h"><a name="4318"></a>4318</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4319"></a>4319</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $ww;</td></tr>
<tr><td class="h"><a name="4320"></a>4320</td><td></td><td></td><td></td><td></td><td class="s">                  $len = 2;</td></tr>
<tr><td class="h"><a name="4321"></a>4321</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4322"></a>4322</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4323"></a>4323</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4324"></a>4324</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'L'  ||  $f eq 'U') {</td></tr>
<tr><td class="h"><a name="4325"></a>4325</td><td></td><td></td><td></td><td></td><td class="s">               my($yy,$ww) = $dmb-&gt;_week_of_year(7,[$y,$m,$d]);</td></tr>
<tr><td class="h"><a name="4326"></a>4326</td><td></td><td></td><td></td><td></td><td class="s">               if ($f eq 'L') {</td></tr>
<tr><td class="h"><a name="4327"></a>4327</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $yy;</td></tr>
<tr><td class="h"><a name="4328"></a>4328</td><td></td><td></td><td></td><td></td><td class="s">                  $len = 4;</td></tr>
<tr><td class="h"><a name="4329"></a>4329</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4330"></a>4330</td><td></td><td></td><td></td><td></td><td class="s">                  $val = $ww;</td></tr>
<tr><td class="h"><a name="4331"></a>4331</td><td></td><td></td><td></td><td></td><td class="s">                  $len = 2;</td></tr>
<tr><td class="h"><a name="4332"></a>4332</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4333"></a>4333</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4334"></a>4334</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4335"></a>4335</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'Y'  ||  $f eq 'y') {</td></tr>
<tr><td class="h"><a name="4336"></a>4336</td><td></td><td></td><td></td><td></td><td class="s">               $val = $y;</td></tr>
<tr><td class="h"><a name="4337"></a>4337</td><td></td><td></td><td></td><td></td><td class="s">               $len = 4;</td></tr>
<tr><td class="h"><a name="4338"></a>4338</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4339"></a>4339</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4340"></a>4340</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'm'  ||  $f eq 'f') {</td></tr>
<tr><td class="h"><a name="4341"></a>4341</td><td></td><td></td><td></td><td></td><td class="s">               $val = $m;</td></tr>
<tr><td class="h"><a name="4342"></a>4342</td><td></td><td></td><td></td><td></td><td class="s">               $len = 2;</td></tr>
<tr><td class="h"><a name="4343"></a>4343</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4344"></a>4344</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4345"></a>4345</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'd'  ||  $f eq 'e') {</td></tr>
<tr><td class="h"><a name="4346"></a>4346</td><td></td><td></td><td></td><td></td><td class="s">               $val = $d;</td></tr>
<tr><td class="h"><a name="4347"></a>4347</td><td></td><td></td><td></td><td></td><td class="s">               $len = 2;</td></tr>
<tr><td class="h"><a name="4348"></a>4348</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4349"></a>4349</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4350"></a>4350</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'j') {</td></tr>
<tr><td class="h"><a name="4351"></a>4351</td><td></td><td></td><td></td><td></td><td class="s">               $val = $dmb-&gt;day_of_year([$y,$m,$d]);</td></tr>
<tr><td class="h"><a name="4352"></a>4352</td><td></td><td></td><td></td><td></td><td class="s">               $len = 3;</td></tr>
<tr><td class="h"><a name="4353"></a>4353</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4354"></a>4354</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4355"></a>4355</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4356"></a>4356</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $hr{$f}) {</td></tr>
<tr><td class="h"><a name="4357"></a>4357</td><td></td><td></td><td></td><td></td><td class="s">               $val = $h;</td></tr>
<tr><td class="h"><a name="4358"></a>4358</td><td></td><td></td><td></td><td></td><td class="s">               if ($f eq 'I'  ||  $f eq 'i') {</td></tr>
<tr><td class="h"><a name="4359"></a>4359</td><td></td><td></td><td></td><td></td><td class="s">                  $val -= 12  if ($val &gt; 12);</td></tr>
<tr><td class="h"><a name="4360"></a>4360</td><td></td><td></td><td></td><td></td><td class="s">                  $val  = 12  if ($val == 0);</td></tr>
<tr><td class="h"><a name="4361"></a>4361</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4362"></a>4362</td><td></td><td></td><td></td><td></td><td class="s">               $len = 2;</td></tr>
<tr><td class="h"><a name="4363"></a>4363</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4364"></a>4364</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4365"></a>4365</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'M') {</td></tr>
<tr><td class="h"><a name="4366"></a>4366</td><td></td><td></td><td></td><td></td><td class="s">               $val = $mn;</td></tr>
<tr><td class="h"><a name="4367"></a>4367</td><td></td><td></td><td></td><td></td><td class="s">               $len = 2;</td></tr>
<tr><td class="h"><a name="4368"></a>4368</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4369"></a>4369</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4370"></a>4370</td><td></td><td></td><td></td><td></td><td class="s">            if ($f eq 'S') {</td></tr>
<tr><td class="h"><a name="4371"></a>4371</td><td></td><td></td><td></td><td></td><td class="s">               $val = $s;</td></tr>
<tr><td class="h"><a name="4372"></a>4372</td><td></td><td></td><td></td><td></td><td class="s">               $len = 2;</td></tr>
<tr><td class="h"><a name="4373"></a>4373</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4374"></a>4374</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4375"></a>4375</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $dow{$f}) {</td></tr>
<tr><td class="h"><a name="4376"></a>4376</td><td></td><td></td><td></td><td></td><td class="s">               $dow = $dmb-&gt;day_of_week([$y,$m,$d]);</td></tr>
<tr><td class="h"><a name="4377"></a>4377</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4378"></a>4378</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4379"></a>4379</td><td></td><td></td><td></td><td></td><td class="s">            ###</td></tr>
<tr><td class="h"><a name="4380"></a>4380</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4381"></a>4381</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $num{$f}) {</td></tr>
<tr><td class="h"><a name="4382"></a>4382</td><td></td><td></td><td></td><td></td><td class="s">               while (length($val) &lt; $len) {</td></tr>
<tr><td class="h"><a name="4383"></a>4383</td><td></td><td></td><td></td><td></td><td class="s">                  $val = &quot;$pad$val&quot;;</td></tr>
<tr><td class="h"><a name="4384"></a>4384</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4385"></a>4385</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4386"></a>4386</td><td></td><td></td><td></td><td></td><td class="s">               $val = substr($val,2,2)  if ($f eq 'y');</td></tr>
<tr><td class="h"><a name="4387"></a>4387</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4388"></a>4388</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'b'  ||  $f eq 'h') {</td></tr>
<tr><td class="h"><a name="4389"></a>4389</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'month_abb'}[$m-1];</td></tr>
<tr><td class="h"><a name="4390"></a>4390</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4391"></a>4391</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'B') {</td></tr>
<tr><td class="h"><a name="4392"></a>4392</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'month_name'}[$m-1];</td></tr>
<tr><td class="h"><a name="4393"></a>4393</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4394"></a>4394</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'v') {</td></tr>
<tr><td class="h"><a name="4395"></a>4395</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'day_char'}[$dow-1];</td></tr>
<tr><td class="h"><a name="4396"></a>4396</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4397"></a>4397</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'a') {</td></tr>
<tr><td class="h"><a name="4398"></a>4398</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'day_abb'}[$dow-1];</td></tr>
<tr><td class="h"><a name="4399"></a>4399</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4400"></a>4400</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'A') {</td></tr>
<tr><td class="h"><a name="4401"></a>4401</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'day_name'}[$dow-1];</td></tr>
<tr><td class="h"><a name="4402"></a>4402</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4403"></a>4403</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'w') {</td></tr>
<tr><td class="h"><a name="4404"></a>4404</td><td></td><td></td><td></td><td></td><td class="s">               $val = $dow;</td></tr>
<tr><td class="h"><a name="4405"></a>4405</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4406"></a>4406</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'p') {</td></tr>
<tr><td class="h"><a name="4407"></a>4407</td><td></td><td></td><td></td><td></td><td class="s">               my $i = ($h &gt;= 12 ? 1 : 0);</td></tr>
<tr><td class="h"><a name="4408"></a>4408</td><td></td><td></td><td></td><td></td><td class="s">               $val  = $$dmb{'data'}{'wordlist'}{'ampm'}[$i];</td></tr>
<tr><td class="h"><a name="4409"></a>4409</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4410"></a>4410</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'Z') {</td></tr>
<tr><td class="h"><a name="4411"></a>4411</td><td></td><td></td><td></td><td></td><td class="s">               $val  = $$self{'data'}{'abb'};</td></tr>
<tr><td class="h"><a name="4412"></a>4412</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4413"></a>4413</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'N') {</td></tr>
<tr><td class="h"><a name="4414"></a>4414</td><td></td><td></td><td></td><td></td><td class="s">               my $off = $$self{'data'}{'offset'};</td></tr>
<tr><td class="h"><a name="4415"></a>4415</td><td></td><td></td><td></td><td></td><td class="s">               $val = $dmb-&gt;join('offset',$off);</td></tr>
<tr><td class="h"><a name="4416"></a>4416</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4417"></a>4417</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'z') {</td></tr>
<tr><td class="h"><a name="4418"></a>4418</td><td></td><td></td><td></td><td></td><td class="s">               my $off = $$self{'data'}{'offset'};</td></tr>
<tr><td class="h"><a name="4419"></a>4419</td><td></td><td></td><td></td><td></td><td class="s">               $val = $dmb-&gt;join('offset',$off);</td></tr>
<tr><td class="h"><a name="4420"></a>4420</td><td></td><td></td><td></td><td></td><td class="s">               $val =~ s/://g;</td></tr>
<tr><td class="h"><a name="4421"></a>4421</td><td></td><td></td><td></td><td></td><td class="s">               $val =~ s/00$//;</td></tr>
<tr><td class="h"><a name="4422"></a>4422</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4423"></a>4423</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'E') {</td></tr>
<tr><td class="h"><a name="4424"></a>4424</td><td></td><td></td><td></td><td></td><td class="s">               $val = $$dmb{'data'}{'wordlist'}{'nth_dom'}[$d-1];</td></tr>
<tr><td class="h"><a name="4425"></a>4425</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4426"></a>4426</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 's') {</td></tr>
<tr><td class="h"><a name="4427"></a>4427</td><td></td><td></td><td></td><td></td><td class="s">               $val = $self-&gt;secs_since_1970_GMT();</td></tr>
<tr><td class="h"><a name="4428"></a>4428</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4429"></a>4429</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'o') {</td></tr>
<tr><td class="h"><a name="4430"></a>4430</td><td></td><td></td><td></td><td></td><td class="s">               my $date2 = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4431"></a>4431</td><td></td><td></td><td></td><td></td><td class="s">               $date2-&gt;parse('1970-01-01 00:00:00');</td></tr>
<tr><td class="h"><a name="4432"></a>4432</td><td></td><td></td><td></td><td></td><td class="s">               my $delta = $date2-&gt;calc($self);</td></tr>
<tr><td class="h"><a name="4433"></a>4433</td><td></td><td></td><td></td><td></td><td class="s">               $val = $delta-&gt;printf('%sys');</td></tr>
<tr><td class="h"><a name="4434"></a>4434</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4435"></a>4435</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'l') {</td></tr>
<tr><td class="h"><a name="4436"></a>4436</td><td></td><td></td><td></td><td></td><td class="s">               my $d0 = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4437"></a>4437</td><td></td><td></td><td></td><td></td><td class="s">               my $d1 = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4438"></a>4438</td><td></td><td></td><td></td><td></td><td class="s">               $d0-&gt;parse('-0:6:0:0:0:0:0'); # 6 months ago</td></tr>
<tr><td class="h"><a name="4439"></a>4439</td><td></td><td></td><td></td><td></td><td class="s">               $d1-&gt;parse('+0:6:0:0:0:0:0'); # in 6 months</td></tr>
<tr><td class="h"><a name="4440"></a>4440</td><td></td><td></td><td></td><td></td><td class="s">               $d0      = $d0-&gt;value();</td></tr>
<tr><td class="h"><a name="4441"></a>4441</td><td></td><td></td><td></td><td></td><td class="s">               $d1      = $d1-&gt;value();</td></tr>
<tr><td class="h"><a name="4442"></a>4442</td><td></td><td></td><td></td><td></td><td class="s">               my $date = $self-&gt;value();</td></tr>
<tr><td class="h"><a name="4443"></a>4443</td><td></td><td></td><td></td><td></td><td class="s">               if ($date lt $d0  ||  $date ge $d1) {</td></tr>
<tr><td class="h"><a name="4444"></a>4444</td><td></td><td></td><td></td><td></td><td class="s">                  $in  = '%b %e  %Y' . $in;</td></tr>
<tr><td class="h"><a name="4445"></a>4445</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4446"></a>4446</td><td></td><td></td><td></td><td></td><td class="s">                  $in  = '%b %e %H:%M' . $in;</td></tr>
<tr><td class="h"><a name="4447"></a>4447</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4448"></a>4448</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4449"></a>4449</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4450"></a>4450</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'c') {</td></tr>
<tr><td class="h"><a name="4451"></a>4451</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%a %b %e %H:%M:%S %Y' . $in;</td></tr>
<tr><td class="h"><a name="4452"></a>4452</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4453"></a>4453</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4454"></a>4454</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'C'  ||  $f eq 'u') {</td></tr>
<tr><td class="h"><a name="4455"></a>4455</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%a %b %e %H:%M:%S %Z %Y' . $in;</td></tr>
<tr><td class="h"><a name="4456"></a>4456</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4457"></a>4457</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4458"></a>4458</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'g') {</td></tr>
<tr><td class="h"><a name="4459"></a>4459</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%a, %d %b %Y %H:%M:%S %Z' . $in;</td></tr>
<tr><td class="h"><a name="4460"></a>4460</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4461"></a>4461</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4462"></a>4462</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'D') {</td></tr>
<tr><td class="h"><a name="4463"></a>4463</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%m/%d/%y' . $in;</td></tr>
<tr><td class="h"><a name="4464"></a>4464</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4465"></a>4465</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4466"></a>4466</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'r') {</td></tr>
<tr><td class="h"><a name="4467"></a>4467</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%I:%M:%S %p' . $in;</td></tr>
<tr><td class="h"><a name="4468"></a>4468</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4469"></a>4469</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4470"></a>4470</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'R') {</td></tr>
<tr><td class="h"><a name="4471"></a>4471</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%H:%M' . $in;</td></tr>
<tr><td class="h"><a name="4472"></a>4472</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4473"></a>4473</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4474"></a>4474</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'T'  ||  $f eq 'X') {</td></tr>
<tr><td class="h"><a name="4475"></a>4475</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%H:%M:%S' . $in;</td></tr>
<tr><td class="h"><a name="4476"></a>4476</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4477"></a>4477</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4478"></a>4478</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'V') {</td></tr>
<tr><td class="h"><a name="4479"></a>4479</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%m%d%H%M%y' . $in;</td></tr>
<tr><td class="h"><a name="4480"></a>4480</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4481"></a>4481</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4482"></a>4482</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'Q') {</td></tr>
<tr><td class="h"><a name="4483"></a>4483</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%Y%m%d' . $in;</td></tr>
<tr><td class="h"><a name="4484"></a>4484</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4485"></a>4485</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4486"></a>4486</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'q') {</td></tr>
<tr><td class="h"><a name="4487"></a>4487</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%Y%m%d%H%M%S' . $in;</td></tr>
<tr><td class="h"><a name="4488"></a>4488</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4489"></a>4489</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4490"></a>4490</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'P') {</td></tr>
<tr><td class="h"><a name="4491"></a>4491</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%Y%m%d%H:%M:%S' . $in;</td></tr>
<tr><td class="h"><a name="4492"></a>4492</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4493"></a>4493</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4494"></a>4494</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'O') {</td></tr>
<tr><td class="h"><a name="4495"></a>4495</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%Y-%m-%dT%H:%M:%S' . $in;</td></tr>
<tr><td class="h"><a name="4496"></a>4496</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4497"></a>4497</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4498"></a>4498</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'F') {</td></tr>
<tr><td class="h"><a name="4499"></a>4499</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%A, %B %e, %Y' . $in;</td></tr>
<tr><td class="h"><a name="4500"></a>4500</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4501"></a>4501</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4502"></a>4502</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'K') {</td></tr>
<tr><td class="h"><a name="4503"></a>4503</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%Y-%j' . $in;</td></tr>
<tr><td class="h"><a name="4504"></a>4504</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4505"></a>4505</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4506"></a>4506</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'x') {</td></tr>
<tr><td class="h"><a name="4507"></a>4507</td><td></td><td></td><td></td><td></td><td class="s">               if ($dmb-&gt;_config('dateformat') eq 'US') {</td></tr>
<tr><td class="h"><a name="4508"></a>4508</td><td></td><td></td><td></td><td></td><td class="s">                  $in  = '%m/%d/%y' . $in;</td></tr>
<tr><td class="h"><a name="4509"></a>4509</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4510"></a>4510</td><td></td><td></td><td></td><td></td><td class="s">                  $in  = '%d/%m/%y' . $in;</td></tr>
<tr><td class="h"><a name="4511"></a>4511</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4512"></a>4512</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4513"></a>4513</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4514"></a>4514</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'J') {</td></tr>
<tr><td class="h"><a name="4515"></a>4515</td><td></td><td></td><td></td><td></td><td class="s">               $in  = '%G-W%W-%w' . $in;</td></tr>
<tr><td class="h"><a name="4516"></a>4516</td><td></td><td></td><td></td><td></td><td class="s">               $val = '';</td></tr>
<tr><td class="h"><a name="4517"></a>4517</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4518"></a>4518</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 'n') {</td></tr>
<tr><td class="h"><a name="4519"></a>4519</td><td></td><td></td><td></td><td></td><td class="s">               $val = &quot;\n&quot;;</td></tr>
<tr><td class="h"><a name="4520"></a>4520</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4521"></a>4521</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($f eq 't') {</td></tr>
<tr><td class="h"><a name="4522"></a>4522</td><td></td><td></td><td></td><td></td><td class="s">               $val = &quot;\t&quot;;</td></tr>
<tr><td class="h"><a name="4523"></a>4523</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4524"></a>4524</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4525"></a>4525</td><td></td><td></td><td></td><td></td><td class="s">               $val = $f;</td></tr>
<tr><td class="h"><a name="4526"></a>4526</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4527"></a>4527</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4528"></a>4528</td><td></td><td></td><td></td><td></td><td class="s">            if ($val ne '') {</td></tr>
<tr><td class="h"><a name="4529"></a>4529</td><td></td><td></td><td></td><td></td><td class="s">               $$self{'data'}{'f'}{$f} = $val;</td></tr>
<tr><td class="h"><a name="4530"></a>4530</td><td></td><td></td><td></td><td></td><td class="s">               $out .= $val;</td></tr>
<tr><td class="h"><a name="4531"></a>4531</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4532"></a>4532</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4533"></a>4533</td><td></td><td></td><td></td><td></td><td class="s">         push(@out,$out);</td></tr>
<tr><td class="h"><a name="4534"></a>4534</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4535"></a>4535</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4536"></a>4536</td><td></td><td></td><td></td><td></td><td class="s">      if (wantarray) {</td></tr>
<tr><td class="h"><a name="4537"></a>4537</td><td></td><td></td><td></td><td></td><td class="s">         return @out;</td></tr>
<tr><td class="h"><a name="4538"></a>4538</td><td></td><td></td><td></td><td></td><td class="s">      } elsif (@out == 1) {</td></tr>
<tr><td class="h"><a name="4539"></a>4539</td><td></td><td></td><td></td><td></td><td class="s">         return $out[0];</td></tr>
<tr><td class="h"><a name="4540"></a>4540</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4541"></a>4541</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4542"></a>4542</td><td></td><td></td><td></td><td></td><td class="s">      return ''</td></tr>
<tr><td class="h"><a name="4543"></a>4543</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4544"></a>4544</td><td class="c3">1</td><td class="c0"><span title="Avg 1.15ms">1.15ms</span></td><td class="c3">1</td><td class="c3">14µs</td><td class="s">}<div class="calls"><div class="calls_out"># spent    14µs making 1 call to <a href="Date-Manip-Date-pm-12-line.html#4227">Date::Manip::Date::BEGIN@4227</a></div></div></td></tr>
<tr><td class="h"><a name="4545"></a>4545</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4546"></a>4546</td><td></td><td></td><td></td><td></td><td class="s">########################################################################</td></tr>
<tr><td class="h"><a name="4547"></a>4547</td><td></td><td></td><td></td><td></td><td class="s"># EVENT METHODS</td></tr>
<tr><td class="h"><a name="4548"></a>4548</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4549"></a>4549</td><td></td><td></td><td></td><td></td><td class="s">sub list_events {</td></tr>
<tr><td class="h"><a name="4550"></a>4550</td><td></td><td></td><td></td><td></td><td class="s">   my($self,@args) = @_;</td></tr>
<tr><td class="h"><a name="4551"></a>4551</td><td></td><td></td><td></td><td></td><td class="s">   if ($$self{'err'}  ||  ! $$self{'data'}{'set'}) {</td></tr>
<tr><td class="h"><a name="4552"></a>4552</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;WARNING: [list_events] Object must contain a valid date\n&quot;;</td></tr>
<tr><td class="h"><a name="4553"></a>4553</td><td></td><td></td><td></td><td></td><td class="s">      return undef;</td></tr>
<tr><td class="h"><a name="4554"></a>4554</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4555"></a>4555</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4556"></a>4556</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4557"></a>4557</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4558"></a>4558</td><td></td><td></td><td></td><td></td><td class="s">   # Arguments</td></tr>
<tr><td class="h"><a name="4559"></a>4559</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4560"></a>4560</td><td></td><td></td><td></td><td></td><td class="s">   my($date,$day,$format);</td></tr>
<tr><td class="h"><a name="4561"></a>4561</td><td></td><td></td><td></td><td></td><td class="s">   if (@args  &amp;&amp;  $args[$#args] eq 'dates') {</td></tr>
<tr><td class="h"><a name="4562"></a>4562</td><td></td><td></td><td></td><td></td><td class="s">      pop(@args);</td></tr>
<tr><td class="h"><a name="4563"></a>4563</td><td></td><td></td><td></td><td></td><td class="s">      $format = 'dates';</td></tr>
<tr><td class="h"><a name="4564"></a>4564</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="4565"></a>4565</td><td></td><td></td><td></td><td></td><td class="s">      $format = 'std';</td></tr>
<tr><td class="h"><a name="4566"></a>4566</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4567"></a>4567</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4568"></a>4568</td><td></td><td></td><td></td><td></td><td class="s">   if (@args  &amp;&amp;  $#args==0  &amp;&amp;  ref($args[0]) eq 'Date::Manip::Date') {</td></tr>
<tr><td class="h"><a name="4569"></a>4569</td><td></td><td></td><td></td><td></td><td class="s">      $date = $args[0];</td></tr>
<tr><td class="h"><a name="4570"></a>4570</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (@args  &amp;&amp;  $#args==0  &amp;&amp;  $args[0]==0) {</td></tr>
<tr><td class="h"><a name="4571"></a>4571</td><td></td><td></td><td></td><td></td><td class="s">      $day  = 1;</td></tr>
<tr><td class="h"><a name="4572"></a>4572</td><td></td><td></td><td></td><td></td><td class="s">   } elsif (@args) {</td></tr>
<tr><td class="h"><a name="4573"></a>4573</td><td></td><td></td><td></td><td></td><td class="s">      warn &quot;ERROR: [list_events] unknown argument list\n&quot;;</td></tr>
<tr><td class="h"><a name="4574"></a>4574</td><td></td><td></td><td></td><td></td><td class="s">      return [];</td></tr>
<tr><td class="h"><a name="4575"></a>4575</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4576"></a>4576</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4577"></a>4577</td><td></td><td></td><td></td><td></td><td class="s">   # Get the beginning/end dates we're looking for events in</td></tr>
<tr><td class="h"><a name="4578"></a>4578</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4579"></a>4579</td><td></td><td></td><td></td><td></td><td class="s">   my($beg,$end);</td></tr>
<tr><td class="h"><a name="4580"></a>4580</td><td></td><td></td><td></td><td></td><td class="s">   if ($date) {</td></tr>
<tr><td class="h"><a name="4581"></a>4581</td><td></td><td></td><td></td><td></td><td class="s">      $beg = $self;</td></tr>
<tr><td class="h"><a name="4582"></a>4582</td><td></td><td></td><td></td><td></td><td class="s">      $end = $date;</td></tr>
<tr><td class="h"><a name="4583"></a>4583</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($day) {</td></tr>
<tr><td class="h"><a name="4584"></a>4584</td><td></td><td></td><td></td><td></td><td class="s">      $beg = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4585"></a>4585</td><td></td><td></td><td></td><td></td><td class="s">      $end = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4586"></a>4586</td><td></td><td></td><td></td><td></td><td class="s">      my($y,$m,$d) = $self-&gt;value();</td></tr>
<tr><td class="h"><a name="4587"></a>4587</td><td></td><td></td><td></td><td></td><td class="s">      $beg-&gt;set('date',[$y,$m,$d,0,0,0]);</td></tr>
<tr><td class="h"><a name="4588"></a>4588</td><td></td><td></td><td></td><td></td><td class="s">      $end-&gt;set('date',[$y,$m,$d,23,59,59]);</td></tr>
<tr><td class="h"><a name="4589"></a>4589</td><td></td><td></td><td></td><td></td><td class="s">   } else {</td></tr>
<tr><td class="h"><a name="4590"></a>4590</td><td></td><td></td><td></td><td></td><td class="s">      $beg = $self;</td></tr>
<tr><td class="h"><a name="4591"></a>4591</td><td></td><td></td><td></td><td></td><td class="s">      $end = $self;</td></tr>
<tr><td class="h"><a name="4592"></a>4592</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4593"></a>4593</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4594"></a>4594</td><td></td><td></td><td></td><td></td><td class="s">   if ($beg-&gt;cmp($end) == 1) {</td></tr>
<tr><td class="h"><a name="4595"></a>4595</td><td></td><td></td><td></td><td></td><td class="s">      my $tmp = $beg;</td></tr>
<tr><td class="h"><a name="4596"></a>4596</td><td></td><td></td><td></td><td></td><td class="s">      $beg    = $end;</td></tr>
<tr><td class="h"><a name="4597"></a>4597</td><td></td><td></td><td></td><td></td><td class="s">      $end    = $tmp;</td></tr>
<tr><td class="h"><a name="4598"></a>4598</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4599"></a>4599</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4600"></a>4600</td><td></td><td></td><td></td><td></td><td class="s">   # We need to get a list of all events which may apply.</td></tr>
<tr><td class="h"><a name="4601"></a>4601</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4602"></a>4602</td><td></td><td></td><td></td><td></td><td class="s">   my($y0) = $beg-&gt;value();</td></tr>
<tr><td class="h"><a name="4603"></a>4603</td><td></td><td></td><td></td><td></td><td class="s">   my($y1) = $end-&gt;value();</td></tr>
<tr><td class="h"><a name="4604"></a>4604</td><td></td><td></td><td></td><td></td><td class="s">   foreach my $y ($y0..$y1) {</td></tr>
<tr><td class="h"><a name="4605"></a>4605</td><td></td><td></td><td></td><td></td><td class="s">      $self-&gt;_events_year($y);</td></tr>
<tr><td class="h"><a name="4606"></a>4606</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4607"></a>4607</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4608"></a>4608</td><td></td><td></td><td></td><td></td><td class="s">   my @events = ();</td></tr>
<tr><td class="h"><a name="4609"></a>4609</td><td></td><td></td><td></td><td></td><td class="s">   foreach my $i (keys %{ $$dmb{'data'}{'events'} }) {</td></tr>
<tr><td class="h"><a name="4610"></a>4610</td><td></td><td></td><td></td><td></td><td class="s">      my $event = $$dmb{'data'}{'events'}{$i};</td></tr>
<tr><td class="h"><a name="4611"></a>4611</td><td></td><td></td><td></td><td></td><td class="s">      my $type  = $$event{'type'};</td></tr>
<tr><td class="h"><a name="4612"></a>4612</td><td></td><td></td><td></td><td></td><td class="s">      my $name  = $$event{'name'};</td></tr>
<tr><td class="h"><a name="4613"></a>4613</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4614"></a>4614</td><td></td><td></td><td></td><td></td><td class="s">      if ($type eq 'specified') {</td></tr>
<tr><td class="h"><a name="4615"></a>4615</td><td></td><td></td><td></td><td></td><td class="s">         my $d0 = $$dmb{'data'}{'events'}{$i}{'beg'};</td></tr>
<tr><td class="h"><a name="4616"></a>4616</td><td></td><td></td><td></td><td></td><td class="s">         my $d1 = $$dmb{'data'}{'events'}{$i}{'end'};</td></tr>
<tr><td class="h"><a name="4617"></a>4617</td><td></td><td></td><td></td><td></td><td class="s">         push @events,[$d0,$d1,$name];</td></tr>
<tr><td class="h"><a name="4618"></a>4618</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4619"></a>4619</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($type eq 'ym'  ||  $type eq 'date') {</td></tr>
<tr><td class="h"><a name="4620"></a>4620</td><td></td><td></td><td></td><td></td><td class="s">         foreach my $y ($y0..$y1) {</td></tr>
<tr><td class="h"><a name="4621"></a>4621</td><td></td><td></td><td></td><td></td><td class="s">            if (exists $$dmb{'data'}{'events'}{$i}{$y}) {</td></tr>
<tr><td class="h"><a name="4622"></a>4622</td><td></td><td></td><td></td><td></td><td class="s">               my($d0,$d1) = @{ $$dmb{'data'}{'events'}{$i}{$y} };</td></tr>
<tr><td class="h"><a name="4623"></a>4623</td><td></td><td></td><td></td><td></td><td class="s">               push @events,[$d0,$d1,$name];</td></tr>
<tr><td class="h"><a name="4624"></a>4624</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4625"></a>4625</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4626"></a>4626</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4627"></a>4627</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($type eq 'recur') {</td></tr>
<tr><td class="h"><a name="4628"></a>4628</td><td></td><td></td><td></td><td></td><td class="s">         my $rec = $$dmb{'data'}{'events'}{$i}{'recur'};</td></tr>
<tr><td class="h"><a name="4629"></a>4629</td><td></td><td></td><td></td><td></td><td class="s">         my $del = $$dmb{'data'}{'events'}{$i}{'delta'};</td></tr>
<tr><td class="h"><a name="4630"></a>4630</td><td></td><td></td><td></td><td></td><td class="s">         my @d   = $rec-&gt;dates($beg,$end);</td></tr>
<tr><td class="h"><a name="4631"></a>4631</td><td></td><td></td><td></td><td></td><td class="s">         foreach my $d0 (@d) {</td></tr>
<tr><td class="h"><a name="4632"></a>4632</td><td></td><td></td><td></td><td></td><td class="s">            my $d1 = $d0-&gt;calc($del);</td></tr>
<tr><td class="h"><a name="4633"></a>4633</td><td></td><td></td><td></td><td></td><td class="s">            push @events,[$d0,$d1,$name];</td></tr>
<tr><td class="h"><a name="4634"></a>4634</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4635"></a>4635</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4636"></a>4636</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4637"></a>4637</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4638"></a>4638</td><td></td><td></td><td></td><td></td><td class="s">   # Next we need to see which ones apply.</td></tr>
<tr><td class="h"><a name="4639"></a>4639</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4640"></a>4640</td><td></td><td></td><td></td><td></td><td class="s">   my @tmp;</td></tr>
<tr><td class="h"><a name="4641"></a>4641</td><td></td><td></td><td></td><td></td><td class="s">   foreach my $e (@events) {</td></tr>
<tr><td class="h"><a name="4642"></a>4642</td><td></td><td></td><td></td><td></td><td class="s">      my($d0,$d1,$name) = @$e;</td></tr>
<tr><td class="h"><a name="4643"></a>4643</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4644"></a>4644</td><td></td><td></td><td></td><td></td><td class="s">      push(@tmp,$e)  if ($beg-&gt;cmp($d1) != 1  &amp;&amp;</td></tr>
<tr><td class="h"><a name="4645"></a>4645</td><td></td><td></td><td></td><td></td><td class="s">                         $end-&gt;cmp($d0) != -1);</td></tr>
<tr><td class="h"><a name="4646"></a>4646</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4647"></a>4647</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4648"></a>4648</td><td></td><td></td><td></td><td></td><td class="s">   # Now format them...</td></tr>
<tr><td class="h"><a name="4649"></a>4649</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4650"></a>4650</td><td></td><td></td><td></td><td></td><td class="s">   if ($format eq 'std') {</td></tr>
<tr><td class="h"><a name="4651"></a>4651</td><td></td><td></td><td></td><td></td><td class="s">      @events = sort { $$a[0]-&gt;cmp($$b[0])  ||</td></tr>
<tr><td class="h"><a name="4652"></a>4652</td><td></td><td></td><td></td><td></td><td class="s">                       $$a[1]-&gt;cmp($$b[1])  ||</td></tr>
<tr><td class="h"><a name="4653"></a>4653</td><td></td><td></td><td></td><td></td><td class="s">                       $$a[2] cmp $$b[2] } @tmp;</td></tr>
<tr><td class="h"><a name="4654"></a>4654</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4655"></a>4655</td><td></td><td></td><td></td><td></td><td class="s">   } elsif ($format eq 'dates') {</td></tr>
<tr><td class="h"><a name="4656"></a>4656</td><td></td><td></td><td></td><td></td><td class="s">      my $p1s = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4657"></a>4657</td><td></td><td></td><td></td><td></td><td class="s">      $p1s-&gt;parse('+0:0:0:0:0:0:1');</td></tr>
<tr><td class="h"><a name="4658"></a>4658</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4659"></a>4659</td><td></td><td></td><td></td><td></td><td class="s">      @events = ();</td></tr>
<tr><td class="h"><a name="4660"></a>4660</td><td></td><td></td><td></td><td></td><td class="s">      my (@tmp2);</td></tr>
<tr><td class="h"><a name="4661"></a>4661</td><td></td><td></td><td></td><td></td><td class="s">      foreach my $e (@tmp) {</td></tr>
<tr><td class="h"><a name="4662"></a>4662</td><td></td><td></td><td></td><td></td><td class="s">         my $name = $$e[2];</td></tr>
<tr><td class="h"><a name="4663"></a>4663</td><td></td><td></td><td></td><td></td><td class="s">         if ($$e[0]-&gt;cmp($beg) == -1) {</td></tr>
<tr><td class="h"><a name="4664"></a>4664</td><td></td><td></td><td></td><td></td><td class="s">            # Event begins before the start</td></tr>
<tr><td class="h"><a name="4665"></a>4665</td><td></td><td></td><td></td><td></td><td class="s">            push(@tmp2,[$beg,'+',$name]);</td></tr>
<tr><td class="h"><a name="4666"></a>4666</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4667"></a>4667</td><td></td><td></td><td></td><td></td><td class="s">            push(@tmp2,[$$e[0],'+',$name]);</td></tr>
<tr><td class="h"><a name="4668"></a>4668</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4669"></a>4669</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4670"></a>4670</td><td></td><td></td><td></td><td></td><td class="s">         my $d1 = $$e[1]-&gt;calc($p1s);</td></tr>
<tr><td class="h"><a name="4671"></a>4671</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4672"></a>4672</td><td></td><td></td><td></td><td></td><td class="s">         if ($d1-&gt;cmp($end) == -1) {</td></tr>
<tr><td class="h"><a name="4673"></a>4673</td><td></td><td></td><td></td><td></td><td class="s">            # Event ends before the end</td></tr>
<tr><td class="h"><a name="4674"></a>4674</td><td></td><td></td><td></td><td></td><td class="s">            push(@tmp2,[$d1,'-',$name]);</td></tr>
<tr><td class="h"><a name="4675"></a>4675</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4676"></a>4676</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4677"></a>4677</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4678"></a>4678</td><td></td><td></td><td></td><td></td><td class="s">      return ()  if (! @tmp2);</td></tr>
<tr><td class="h"><a name="4679"></a>4679</td><td></td><td></td><td></td><td></td><td class="s">      @tmp2 = sort { $$a[0]-&gt;cmp($$b[0])  ||</td></tr>
<tr><td class="h"><a name="4680"></a>4680</td><td></td><td></td><td></td><td></td><td class="s">                     $$a[1] cmp $$b[1]    ||</td></tr>
<tr><td class="h"><a name="4681"></a>4681</td><td></td><td></td><td></td><td></td><td class="s">                     $$a[2] cmp $$b[2] } @tmp2;</td></tr>
<tr><td class="h"><a name="4682"></a>4682</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4683"></a>4683</td><td></td><td></td><td></td><td></td><td class="s">      # @tmp2 is now:</td></tr>
<tr><td class="h"><a name="4684"></a>4684</td><td></td><td></td><td></td><td></td><td class="s">      #   ( [ DATE1, OP1, NAME1 ], [ DATE2, OP2, NAME2 ], ... )</td></tr>
<tr><td class="h"><a name="4685"></a>4685</td><td></td><td></td><td></td><td></td><td class="s">      # which is sorted by date.</td></tr>
<tr><td class="h"><a name="4686"></a>4686</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4687"></a>4687</td><td></td><td></td><td></td><td></td><td class="s">      my $d = $tmp2[0]-&gt;[0];</td></tr>
<tr><td class="h"><a name="4688"></a>4688</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4689"></a>4689</td><td></td><td></td><td></td><td></td><td class="s">      if ($beg-&gt;cmp($d) != 0) {</td></tr>
<tr><td class="h"><a name="4690"></a>4690</td><td></td><td></td><td></td><td></td><td class="s">         push(@events,[$beg]);</td></tr>
<tr><td class="h"><a name="4691"></a>4691</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4692"></a>4692</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4693"></a>4693</td><td></td><td></td><td></td><td></td><td class="s">      my %e;</td></tr>
<tr><td class="h"><a name="4694"></a>4694</td><td></td><td></td><td></td><td></td><td class="s">      while (1) {</td></tr>
<tr><td class="h"><a name="4695"></a>4695</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4696"></a>4696</td><td></td><td></td><td></td><td></td><td class="s">         # If the first element is the same date as we're</td></tr>
<tr><td class="h"><a name="4697"></a>4697</td><td></td><td></td><td></td><td></td><td class="s">         # currently working with, just perform the operation</td></tr>
<tr><td class="h"><a name="4698"></a>4698</td><td></td><td></td><td></td><td></td><td class="s">         # and remove it from the list. If the list is not empty,</td></tr>
<tr><td class="h"><a name="4699"></a>4699</td><td></td><td></td><td></td><td></td><td class="s">         # we'll proceed to the next element.</td></tr>
<tr><td class="h"><a name="4700"></a>4700</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4701"></a>4701</td><td></td><td></td><td></td><td></td><td class="s">         my $d0 = $tmp2[0]-&gt;[0];</td></tr>
<tr><td class="h"><a name="4702"></a>4702</td><td></td><td></td><td></td><td></td><td class="s">         if ($d-&gt;cmp($d0) == 0) {</td></tr>
<tr><td class="h"><a name="4703"></a>4703</td><td></td><td></td><td></td><td></td><td class="s">            my $e  = shift(@tmp2);</td></tr>
<tr><td class="h"><a name="4704"></a>4704</td><td></td><td></td><td></td><td></td><td class="s">            my $op = $$e[1];</td></tr>
<tr><td class="h"><a name="4705"></a>4705</td><td></td><td></td><td></td><td></td><td class="s">            my $n  = $$e[2];</td></tr>
<tr><td class="h"><a name="4706"></a>4706</td><td></td><td></td><td></td><td></td><td class="s">            if ($op eq '+') {</td></tr>
<tr><td class="h"><a name="4707"></a>4707</td><td></td><td></td><td></td><td></td><td class="s">               $e{$n} = 1;</td></tr>
<tr><td class="h"><a name="4708"></a>4708</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4709"></a>4709</td><td></td><td></td><td></td><td></td><td class="s">               delete $e{$n};</td></tr>
<tr><td class="h"><a name="4710"></a>4710</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4711"></a>4711</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4712"></a>4712</td><td></td><td></td><td></td><td></td><td class="s">            next  if (@tmp2);</td></tr>
<tr><td class="h"><a name="4713"></a>4713</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4714"></a>4714</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4715"></a>4715</td><td></td><td></td><td></td><td></td><td class="s">         # We need to store the existing %e.</td></tr>
<tr><td class="h"><a name="4716"></a>4716</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4717"></a>4717</td><td></td><td></td><td></td><td></td><td class="s">         my @n = sort keys %e;</td></tr>
<tr><td class="h"><a name="4718"></a>4718</td><td></td><td></td><td></td><td></td><td class="s">         push(@events,[$d,@n]);</td></tr>
<tr><td class="h"><a name="4719"></a>4719</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4720"></a>4720</td><td></td><td></td><td></td><td></td><td class="s">         # If the list is empty, we're done. Otherwise, we need to</td></tr>
<tr><td class="h"><a name="4721"></a>4721</td><td></td><td></td><td></td><td></td><td class="s">         # reset the date and continue.</td></tr>
<tr><td class="h"><a name="4722"></a>4722</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4723"></a>4723</td><td></td><td></td><td></td><td></td><td class="s">         last  if (! @tmp2);</td></tr>
<tr><td class="h"><a name="4724"></a>4724</td><td></td><td></td><td></td><td></td><td class="s">         $d = $tmp2[0]-&gt;[0];</td></tr>
<tr><td class="h"><a name="4725"></a>4725</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4726"></a>4726</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4727"></a>4727</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4728"></a>4728</td><td></td><td></td><td></td><td></td><td class="s">   return @events;</td></tr>
<tr><td class="h"><a name="4729"></a>4729</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4730"></a>4730</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4731"></a>4731</td><td></td><td></td><td></td><td></td><td class="s"># The events of type date and ym are determined on a year-by-year basis</td></tr>
<tr><td class="h"><a name="4732"></a>4732</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="4733"></a>4733</td><td></td><td></td><td></td><td></td><td class="s">sub _events_year {</td></tr>
<tr><td class="h"><a name="4734"></a>4734</td><td></td><td></td><td></td><td></td><td class="s">   my($self,$y) = @_;</td></tr>
<tr><td class="h"><a name="4735"></a>4735</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt      = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4736"></a>4736</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb      = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4737"></a>4737</td><td></td><td></td><td></td><td></td><td class="s">   my $tz       = $dmt-&gt;_now('tz',1);</td></tr>
<tr><td class="h"><a name="4738"></a>4738</td><td></td><td></td><td></td><td></td><td class="s">   return  if (exists $$dmb{'data'}{'eventyears'}{$y});</td></tr>
<tr><td class="h"><a name="4739"></a>4739</td><td></td><td></td><td></td><td></td><td class="s">   $self-&gt;_event_objs()  if (! $$dmb{'data'}{'eventobjs'});</td></tr>
<tr><td class="h"><a name="4740"></a>4740</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4741"></a>4741</td><td></td><td></td><td></td><td></td><td class="s">   my $d = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4742"></a>4742</td><td></td><td></td><td></td><td></td><td class="s">   $d-&gt;config('forcedate',&quot;${y}-01-01-00:00:00,$tz&quot;);</td></tr>
<tr><td class="h"><a name="4743"></a>4743</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4744"></a>4744</td><td></td><td></td><td></td><td></td><td class="s">   my $hrM1  = $d-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4745"></a>4745</td><td></td><td></td><td></td><td></td><td class="s">   $hrM1-&gt;set('delta',[0,0,0,0,0,59,59]);</td></tr>
<tr><td class="h"><a name="4746"></a>4746</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4747"></a>4747</td><td></td><td></td><td></td><td></td><td class="s">   my $dayM1 = $d-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4748"></a>4748</td><td></td><td></td><td></td><td></td><td class="s">   $dayM1-&gt;set('delta',[0,0,0,0,23,59,59]);</td></tr>
<tr><td class="h"><a name="4749"></a>4749</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4750"></a>4750</td><td></td><td></td><td></td><td></td><td class="s">   foreach my $i (keys %{ $$dmb{'data'}{'events'} }) {</td></tr>
<tr><td class="h"><a name="4751"></a>4751</td><td></td><td></td><td></td><td></td><td class="s">      my $event = $$dmb{'data'}{'events'}{$i};</td></tr>
<tr><td class="h"><a name="4752"></a>4752</td><td></td><td></td><td></td><td></td><td class="s">      my $type  = $$event{'type'};</td></tr>
<tr><td class="h"><a name="4753"></a>4753</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4754"></a>4754</td><td></td><td></td><td></td><td></td><td class="s">      if ($type eq 'ym') {</td></tr>
<tr><td class="h"><a name="4755"></a>4755</td><td></td><td></td><td></td><td></td><td class="s">         my $beg = $$event{'beg'};</td></tr>
<tr><td class="h"><a name="4756"></a>4756</td><td></td><td></td><td></td><td></td><td class="s">         my $end = $$event{'end'};</td></tr>
<tr><td class="h"><a name="4757"></a>4757</td><td></td><td></td><td></td><td></td><td class="s">         my $d0  = $d-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4758"></a>4758</td><td></td><td></td><td></td><td></td><td class="s">         $d0-&gt;parse_date($beg);</td></tr>
<tr><td class="h"><a name="4759"></a>4759</td><td></td><td></td><td></td><td></td><td class="s">         $d0-&gt;set('time',[0,0,0]);</td></tr>
<tr><td class="h"><a name="4760"></a>4760</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4761"></a>4761</td><td></td><td></td><td></td><td></td><td class="s">         my $d1;</td></tr>
<tr><td class="h"><a name="4762"></a>4762</td><td></td><td></td><td></td><td></td><td class="s">         if ($end) {</td></tr>
<tr><td class="h"><a name="4763"></a>4763</td><td></td><td></td><td></td><td></td><td class="s">            $d1  = $d0-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4764"></a>4764</td><td></td><td></td><td></td><td></td><td class="s">            $d1-&gt;parse_date($end);</td></tr>
<tr><td class="h"><a name="4765"></a>4765</td><td></td><td></td><td></td><td></td><td class="s">            $d1-&gt;set('time',[23,59,59]);</td></tr>
<tr><td class="h"><a name="4766"></a>4766</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4767"></a>4767</td><td></td><td></td><td></td><td></td><td class="s">            $d1  = $d0-&gt;calc($dayM1);</td></tr>
<tr><td class="h"><a name="4768"></a>4768</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4769"></a>4769</td><td></td><td></td><td></td><td></td><td class="s">         $$dmb{'data'}{'events'}{$i}{$y} = [ $d0,$d1 ];</td></tr>
<tr><td class="h"><a name="4770"></a>4770</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4771"></a>4771</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($type eq 'date') {</td></tr>
<tr><td class="h"><a name="4772"></a>4772</td><td></td><td></td><td></td><td></td><td class="s">         my $beg = $$event{'beg'};</td></tr>
<tr><td class="h"><a name="4773"></a>4773</td><td></td><td></td><td></td><td></td><td class="s">         my $end = $$event{'end'};</td></tr>
<tr><td class="h"><a name="4774"></a>4774</td><td></td><td></td><td></td><td></td><td class="s">         my $del = $$event{'delta'};</td></tr>
<tr><td class="h"><a name="4775"></a>4775</td><td></td><td></td><td></td><td></td><td class="s">         my $d0  = $d-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4776"></a>4776</td><td></td><td></td><td></td><td></td><td class="s">         $d0-&gt;parse($beg);</td></tr>
<tr><td class="h"><a name="4777"></a>4777</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4778"></a>4778</td><td></td><td></td><td></td><td></td><td class="s">         my $d1;</td></tr>
<tr><td class="h"><a name="4779"></a>4779</td><td></td><td></td><td></td><td></td><td class="s">         if ($end) {</td></tr>
<tr><td class="h"><a name="4780"></a>4780</td><td></td><td></td><td></td><td></td><td class="s">            $d1  = $d0-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4781"></a>4781</td><td></td><td></td><td></td><td></td><td class="s">            $d1-&gt;parse($end);</td></tr>
<tr><td class="h"><a name="4782"></a>4782</td><td></td><td></td><td></td><td></td><td class="s">         } elsif ($del) {</td></tr>
<tr><td class="h"><a name="4783"></a>4783</td><td></td><td></td><td></td><td></td><td class="s">            $d1 = $d0-&gt;calc($del);</td></tr>
<tr><td class="h"><a name="4784"></a>4784</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4785"></a>4785</td><td></td><td></td><td></td><td></td><td class="s">            $d1  = $d0-&gt;calc($hrM1);</td></tr>
<tr><td class="h"><a name="4786"></a>4786</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4787"></a>4787</td><td></td><td></td><td></td><td></td><td class="s">         $$dmb{'data'}{'events'}{$i}{$y} = [ $d0,$d1 ];</td></tr>
<tr><td class="h"><a name="4788"></a>4788</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="4789"></a>4789</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="4790"></a>4790</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="4791"></a>4791</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4792"></a>4792</td><td></td><td></td><td></td><td></td><td class="s"># This parses the raw event list.  It only has to be done once.</td></tr>
<tr><td class="h"><a name="4793"></a>4793</td><td></td><td></td><td></td><td></td><td class="s">#</td></tr>
<tr><td class="h"><a name="4794"></a>4794</td><td></td><td></td><td></td><td></td><td class="s">sub _event_objs {</td></tr>
<tr><td class="h"><a name="4795"></a>4795</td><td></td><td></td><td></td><td></td><td class="s">   my($self) = @_;</td></tr>
<tr><td class="h"><a name="4796"></a>4796</td><td></td><td></td><td></td><td></td><td class="s">   my $dmt = $$self{'tz'};</td></tr>
<tr><td class="h"><a name="4797"></a>4797</td><td></td><td></td><td></td><td></td><td class="s">   my $dmb = $$dmt{'base'};</td></tr>
<tr><td class="h"><a name="4798"></a>4798</td><td></td><td></td><td></td><td></td><td class="s">   # Only parse once.</td></tr>
<tr><td class="h"><a name="4799"></a>4799</td><td></td><td></td><td></td><td></td><td class="s">   $$dmb{'data'}{'eventobjs'} = 1;</td></tr>
<tr><td class="h"><a name="4800"></a>4800</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4801"></a>4801</td><td></td><td></td><td></td><td></td><td class="s">   my $hrM1  = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4802"></a>4802</td><td></td><td></td><td></td><td></td><td class="s">   $hrM1-&gt;set('delta',[0,0,0,0,0,59,59]);</td></tr>
<tr><td class="h"><a name="4803"></a>4803</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4804"></a>4804</td><td></td><td></td><td></td><td></td><td class="s">   my $M1    = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4805"></a>4805</td><td></td><td></td><td></td><td></td><td class="s">   $M1-&gt;set('delta',[0,0,0,0,0,0,-1]);</td></tr>
<tr><td class="h"><a name="4806"></a>4806</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4807"></a>4807</td><td></td><td></td><td></td><td></td><td class="s">   my @tmp   = @{ $$dmb{'data'}{'sections'}{'events'} };</td></tr>
<tr><td class="h"><a name="4808"></a>4808</td><td></td><td></td><td></td><td></td><td class="s">   my $i     = 0;</td></tr>
<tr><td class="h"><a name="4809"></a>4809</td><td></td><td></td><td></td><td></td><td class="s">   while (@tmp) {</td></tr>
<tr><td class="h"><a name="4810"></a>4810</td><td></td><td></td><td></td><td></td><td class="s">      my $string = shift(@tmp);</td></tr>
<tr><td class="h"><a name="4811"></a>4811</td><td></td><td></td><td></td><td></td><td class="s">      my $name   = shift(@tmp);</td></tr>
<tr><td class="h"><a name="4812"></a>4812</td><td></td><td></td><td></td><td></td><td class="s">      my @event  = split(/\s*;\s*/,$string);</td></tr>
<tr><td class="h"><a name="4813"></a>4813</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4814"></a>4814</td><td></td><td></td><td></td><td></td><td class="s">      if ($#event == 0) {</td></tr>
<tr><td class="h"><a name="4815"></a>4815</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4816"></a>4816</td><td></td><td></td><td></td><td></td><td class="s">         # YMD/YM</td></tr>
<tr><td class="h"><a name="4817"></a>4817</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4818"></a>4818</td><td></td><td></td><td></td><td></td><td class="s">         my $d1  = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4819"></a>4819</td><td></td><td></td><td></td><td></td><td class="s">         my $err = $d1-&gt;parse_date($event[0]);</td></tr>
<tr><td class="h"><a name="4820"></a>4820</td><td></td><td></td><td></td><td></td><td class="s">         if (! $err) {</td></tr>
<tr><td class="h"><a name="4821"></a>4821</td><td></td><td></td><td></td><td></td><td class="s">            if ($$d1{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4822"></a>4822</td><td></td><td></td><td></td><td></td><td class="s">               # YM</td></tr>
<tr><td class="h"><a name="4823"></a>4823</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'ym',</td></tr>
<tr><td class="h"><a name="4824"></a>4824</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4825"></a>4825</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $event[0] };</td></tr>
<tr><td class="h"><a name="4826"></a>4826</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4827"></a>4827</td><td></td><td></td><td></td><td></td><td class="s">               # YMD</td></tr>
<tr><td class="h"><a name="4828"></a>4828</td><td></td><td></td><td></td><td></td><td class="s">               my $d2         = $d1-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4829"></a>4829</td><td></td><td></td><td></td><td></td><td class="s">               my ($y,$m,$d)  = $d1-&gt;value();</td></tr>
<tr><td class="h"><a name="4830"></a>4830</td><td></td><td></td><td></td><td></td><td class="s">               $d1-&gt;set('time',[0,0,0]);</td></tr>
<tr><td class="h"><a name="4831"></a>4831</td><td></td><td></td><td></td><td></td><td class="s">               $d2-&gt;set('date',[$y,$m,$d,23,59,59]);</td></tr>
<tr><td class="h"><a name="4832"></a>4832</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4833"></a>4833</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4834"></a>4834</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4835"></a>4835</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2 };</td></tr>
<tr><td class="h"><a name="4836"></a>4836</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4837"></a>4837</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="4838"></a>4838</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4839"></a>4839</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4840"></a>4840</td><td></td><td></td><td></td><td></td><td class="s">         # Date</td></tr>
<tr><td class="h"><a name="4841"></a>4841</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4842"></a>4842</td><td></td><td></td><td></td><td></td><td class="s">         $err = $d1-&gt;parse($event[0]);</td></tr>
<tr><td class="h"><a name="4843"></a>4843</td><td></td><td></td><td></td><td></td><td class="s">         if (! $err) {</td></tr>
<tr><td class="h"><a name="4844"></a>4844</td><td></td><td></td><td></td><td></td><td class="s">            if ($$d1{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4845"></a>4845</td><td></td><td></td><td></td><td></td><td class="s">               # Date (no year)</td></tr>
<tr><td class="h"><a name="4846"></a>4846</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type'  =&gt; 'date',</td></tr>
<tr><td class="h"><a name="4847"></a>4847</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name'  =&gt; $name,</td></tr>
<tr><td class="h"><a name="4848"></a>4848</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'   =&gt; $event[0],</td></tr>
<tr><td class="h"><a name="4849"></a>4849</td><td></td><td></td><td></td><td></td><td class="s">                                                 'delta' =&gt; $hrM1</td></tr>
<tr><td class="h"><a name="4850"></a>4850</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4851"></a>4851</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4852"></a>4852</td><td></td><td></td><td></td><td></td><td class="s">               # Date (year)</td></tr>
<tr><td class="h"><a name="4853"></a>4853</td><td></td><td></td><td></td><td></td><td class="s">               my $d2 = $d1-&gt;calc($hrM1);</td></tr>
<tr><td class="h"><a name="4854"></a>4854</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4855"></a>4855</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4856"></a>4856</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4857"></a>4857</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2</td></tr>
<tr><td class="h"><a name="4858"></a>4858</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4859"></a>4859</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4860"></a>4860</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="4861"></a>4861</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4862"></a>4862</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4863"></a>4863</td><td></td><td></td><td></td><td></td><td class="s">         # Recur</td></tr>
<tr><td class="h"><a name="4864"></a>4864</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4865"></a>4865</td><td></td><td></td><td></td><td></td><td class="s">         my $r = $self-&gt;new_recur();</td></tr>
<tr><td class="h"><a name="4866"></a>4866</td><td></td><td></td><td></td><td></td><td class="s">         $err  = $r-&gt;parse($event[0]);</td></tr>
<tr><td class="h"><a name="4867"></a>4867</td><td></td><td></td><td></td><td></td><td class="s">         if ($err) {</td></tr>
<tr><td class="h"><a name="4868"></a>4868</td><td></td><td></td><td></td><td></td><td class="s">            warn &quot;ERROR: invalid event definition (must be Date, YMD, YM, or Recur)\n&quot;</td></tr>
<tr><td class="h"><a name="4869"></a>4869</td><td></td><td></td><td></td><td></td><td class="s">               . &quot;       $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4870"></a>4870</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="4871"></a>4871</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4872"></a>4872</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4873"></a>4873</td><td></td><td></td><td></td><td></td><td class="s">         my @d = $r-&gt;dates();</td></tr>
<tr><td class="h"><a name="4874"></a>4874</td><td></td><td></td><td></td><td></td><td class="s">         if (@d) {</td></tr>
<tr><td class="h"><a name="4875"></a>4875</td><td></td><td></td><td></td><td></td><td class="s">            foreach my $d (@d) {</td></tr>
<tr><td class="h"><a name="4876"></a>4876</td><td></td><td></td><td></td><td></td><td class="s">               my $d2 = $d-&gt;calc($hrM1);</td></tr>
<tr><td class="h"><a name="4877"></a>4877</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4878"></a>4878</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4879"></a>4879</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4880"></a>4880</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2</td></tr>
<tr><td class="h"><a name="4881"></a>4881</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4882"></a>4882</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4883"></a>4883</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="4884"></a>4884</td><td></td><td></td><td></td><td></td><td class="s">            $$dmb{'data'}{'events'}{$i++} = { 'type'  =&gt; 'recur',</td></tr>
<tr><td class="h"><a name="4885"></a>4885</td><td></td><td></td><td></td><td></td><td class="s">                                              'name'  =&gt; $name,</td></tr>
<tr><td class="h"><a name="4886"></a>4886</td><td></td><td></td><td></td><td></td><td class="s">                                              'recur' =&gt; $r,</td></tr>
<tr><td class="h"><a name="4887"></a>4887</td><td></td><td></td><td></td><td></td><td class="s">                                              'delta' =&gt; $hrM1</td></tr>
<tr><td class="h"><a name="4888"></a>4888</td><td></td><td></td><td></td><td></td><td class="s">                                            };</td></tr>
<tr><td class="h"><a name="4889"></a>4889</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4890"></a>4890</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4891"></a>4891</td><td></td><td></td><td></td><td></td><td class="s">      } elsif ($#event == 1) {</td></tr>
<tr><td class="h"><a name="4892"></a>4892</td><td></td><td></td><td></td><td></td><td class="s">         my($o1,$o2) = @event;</td></tr>
<tr><td class="h"><a name="4893"></a>4893</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4894"></a>4894</td><td></td><td></td><td></td><td></td><td class="s">         # YMD;YMD</td></tr>
<tr><td class="h"><a name="4895"></a>4895</td><td></td><td></td><td></td><td></td><td class="s">         # YM;YM</td></tr>
<tr><td class="h"><a name="4896"></a>4896</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4897"></a>4897</td><td></td><td></td><td></td><td></td><td class="s">         my $d1   = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4898"></a>4898</td><td></td><td></td><td></td><td></td><td class="s">         my $err = $d1-&gt;parse_date($o1);</td></tr>
<tr><td class="h"><a name="4899"></a>4899</td><td></td><td></td><td></td><td></td><td class="s">         if (! $err) {</td></tr>
<tr><td class="h"><a name="4900"></a>4900</td><td></td><td></td><td></td><td></td><td class="s">            my $d2 = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4901"></a>4901</td><td></td><td></td><td></td><td></td><td class="s">            $err   = $d2-&gt;parse_date($o2);</td></tr>
<tr><td class="h"><a name="4902"></a>4902</td><td></td><td></td><td></td><td></td><td class="s">            if ($err) {</td></tr>
<tr><td class="h"><a name="4903"></a>4903</td><td></td><td></td><td></td><td></td><td class="s">               warn &quot;ERROR: invalid event definition (must be YMD;YMD or YM;YM)\n&quot;</td></tr>
<tr><td class="h"><a name="4904"></a>4904</td><td></td><td></td><td></td><td></td><td class="s">                  . &quot;       $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4905"></a>4905</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4906"></a>4906</td><td></td><td></td><td></td><td></td><td class="s">            } elsif ($$d1{'data'}{'def'}[0] ne $$d2{'data'}{'def'}[0]) {</td></tr>
<tr><td class="h"><a name="4907"></a>4907</td><td></td><td></td><td></td><td></td><td class="s">               warn &quot;ERROR: invalid event definition (YMD;YM or YM;YMD not allowed)\n&quot;</td></tr>
<tr><td class="h"><a name="4908"></a>4908</td><td></td><td></td><td></td><td></td><td class="s">                  . &quot;       $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4909"></a>4909</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4910"></a>4910</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4911"></a>4911</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4912"></a>4912</td><td></td><td></td><td></td><td></td><td class="s">            if ($$d1{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4913"></a>4913</td><td></td><td></td><td></td><td></td><td class="s">               # YM;YM</td></tr>
<tr><td class="h"><a name="4914"></a>4914</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'ym',</td></tr>
<tr><td class="h"><a name="4915"></a>4915</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4916"></a>4916</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $o1,</td></tr>
<tr><td class="h"><a name="4917"></a>4917</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $o2</td></tr>
<tr><td class="h"><a name="4918"></a>4918</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4919"></a>4919</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4920"></a>4920</td><td></td><td></td><td></td><td></td><td class="s">               # YMD;YMD</td></tr>
<tr><td class="h"><a name="4921"></a>4921</td><td></td><td></td><td></td><td></td><td class="s">               $d1-&gt;set('time',[0,0,0]);</td></tr>
<tr><td class="h"><a name="4922"></a>4922</td><td></td><td></td><td></td><td></td><td class="s">               $d2-&gt;set('time',[23,59,59]);</td></tr>
<tr><td class="h"><a name="4923"></a>4923</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4924"></a>4924</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4925"></a>4925</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4926"></a>4926</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2 };</td></tr>
<tr><td class="h"><a name="4927"></a>4927</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4928"></a>4928</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="4929"></a>4929</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4930"></a>4930</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4931"></a>4931</td><td></td><td></td><td></td><td></td><td class="s">         # Date;Date</td></tr>
<tr><td class="h"><a name="4932"></a>4932</td><td></td><td></td><td></td><td></td><td class="s">         # Date;Delta</td></tr>
<tr><td class="h"><a name="4933"></a>4933</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4934"></a>4934</td><td></td><td></td><td></td><td></td><td class="s">         $err = $d1-&gt;parse($o1);</td></tr>
<tr><td class="h"><a name="4935"></a>4935</td><td></td><td></td><td></td><td></td><td class="s">         if (! $err) {</td></tr>
<tr><td class="h"><a name="4936"></a>4936</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4937"></a>4937</td><td></td><td></td><td></td><td></td><td class="s">            my $d2 = $self-&gt;new_date();</td></tr>
<tr><td class="h"><a name="4938"></a>4938</td><td></td><td></td><td></td><td></td><td class="s">            $err   = $d2-&gt;parse($o2,'nodelta');</td></tr>
<tr><td class="h"><a name="4939"></a>4939</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4940"></a>4940</td><td></td><td></td><td></td><td></td><td class="s">            if (! $err) {</td></tr>
<tr><td class="h"><a name="4941"></a>4941</td><td></td><td></td><td></td><td></td><td class="s">               # Date;Date</td></tr>
<tr><td class="h"><a name="4942"></a>4942</td><td></td><td></td><td></td><td></td><td class="s">               if ($$d1{'data'}{'def'}[0] ne $$d2{'data'}{'def'}[0]) {</td></tr>
<tr><td class="h"><a name="4943"></a>4943</td><td></td><td></td><td></td><td></td><td class="s">                  warn &quot;ERROR: invalid event definition (year must be absent or\n&quot;</td></tr>
<tr><td class="h"><a name="4944"></a>4944</td><td></td><td></td><td></td><td></td><td class="s">                     . &quot;       included in both dats in Date;Date)\n&quot;</td></tr>
<tr><td class="h"><a name="4945"></a>4945</td><td></td><td></td><td></td><td></td><td class="s">                     . &quot;       $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4946"></a>4946</td><td></td><td></td><td></td><td></td><td class="s">                  next;</td></tr>
<tr><td class="h"><a name="4947"></a>4947</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4948"></a>4948</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4949"></a>4949</td><td></td><td></td><td></td><td></td><td class="s">               if ($$d1{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4950"></a>4950</td><td></td><td></td><td></td><td></td><td class="s">                  # Date (no year)</td></tr>
<tr><td class="h"><a name="4951"></a>4951</td><td></td><td></td><td></td><td></td><td class="s">                  $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'date',</td></tr>
<tr><td class="h"><a name="4952"></a>4952</td><td></td><td></td><td></td><td></td><td class="s">                                                    'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4953"></a>4953</td><td></td><td></td><td></td><td></td><td class="s">                                                    'beg'  =&gt; $o1,</td></tr>
<tr><td class="h"><a name="4954"></a>4954</td><td></td><td></td><td></td><td></td><td class="s">                                                    'end'  =&gt; $o2</td></tr>
<tr><td class="h"><a name="4955"></a>4955</td><td></td><td></td><td></td><td></td><td class="s">                                                  };</td></tr>
<tr><td class="h"><a name="4956"></a>4956</td><td></td><td></td><td></td><td></td><td class="s">               } else {</td></tr>
<tr><td class="h"><a name="4957"></a>4957</td><td></td><td></td><td></td><td></td><td class="s">                  # Date (year)</td></tr>
<tr><td class="h"><a name="4958"></a>4958</td><td></td><td></td><td></td><td></td><td class="s">                  $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4959"></a>4959</td><td></td><td></td><td></td><td></td><td class="s">                                                    'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4960"></a>4960</td><td></td><td></td><td></td><td></td><td class="s">                                                    'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4961"></a>4961</td><td></td><td></td><td></td><td></td><td class="s">                                                    'end'  =&gt; $d2</td></tr>
<tr><td class="h"><a name="4962"></a>4962</td><td></td><td></td><td></td><td></td><td class="s">                                                  };</td></tr>
<tr><td class="h"><a name="4963"></a>4963</td><td></td><td></td><td></td><td></td><td class="s">               }</td></tr>
<tr><td class="h"><a name="4964"></a>4964</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4965"></a>4965</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4966"></a>4966</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4967"></a>4967</td><td></td><td></td><td></td><td></td><td class="s">            # Date;Delta</td></tr>
<tr><td class="h"><a name="4968"></a>4968</td><td></td><td></td><td></td><td></td><td class="s">            my $del = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="4969"></a>4969</td><td></td><td></td><td></td><td></td><td class="s">            $err    = $del-&gt;parse($o2);</td></tr>
<tr><td class="h"><a name="4970"></a>4970</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4971"></a>4971</td><td></td><td></td><td></td><td></td><td class="s">            if ($err) {</td></tr>
<tr><td class="h"><a name="4972"></a>4972</td><td></td><td></td><td></td><td></td><td class="s">               warn &quot;ERROR: invalid event definition (must be Date;Date or\n&quot;</td></tr>
<tr><td class="h"><a name="4973"></a>4973</td><td></td><td></td><td></td><td></td><td class="s">                  . &quot;       Date;Delta) $string\n&quot;;</td></tr>
<tr><td class="h"><a name="4974"></a>4974</td><td></td><td></td><td></td><td></td><td class="s">               next;</td></tr>
<tr><td class="h"><a name="4975"></a>4975</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4976"></a>4976</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4977"></a>4977</td><td></td><td></td><td></td><td></td><td class="s">            $del    = $del-&gt;calc($M1);</td></tr>
<tr><td class="h"><a name="4978"></a>4978</td><td></td><td></td><td></td><td></td><td class="s">            if ($$d1{'data'}{'def'}[0] eq '') {</td></tr>
<tr><td class="h"><a name="4979"></a>4979</td><td></td><td></td><td></td><td></td><td class="s">               # Date (no year)</td></tr>
<tr><td class="h"><a name="4980"></a>4980</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type'  =&gt; 'date',</td></tr>
<tr><td class="h"><a name="4981"></a>4981</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name'  =&gt; $name,</td></tr>
<tr><td class="h"><a name="4982"></a>4982</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'   =&gt; $o1,</td></tr>
<tr><td class="h"><a name="4983"></a>4983</td><td></td><td></td><td></td><td></td><td class="s">                                                 'delta' =&gt; $del</td></tr>
<tr><td class="h"><a name="4984"></a>4984</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4985"></a>4985</td><td></td><td></td><td></td><td></td><td class="s">            } else {</td></tr>
<tr><td class="h"><a name="4986"></a>4986</td><td></td><td></td><td></td><td></td><td class="s">               # Date (year)</td></tr>
<tr><td class="h"><a name="4987"></a>4987</td><td></td><td></td><td></td><td></td><td class="s">               $d2 = $d1-&gt;calc($del);</td></tr>
<tr><td class="h"><a name="4988"></a>4988</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="4989"></a>4989</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="4990"></a>4990</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="4991"></a>4991</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2</td></tr>
<tr><td class="h"><a name="4992"></a>4992</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="4993"></a>4993</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="4994"></a>4994</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="4995"></a>4995</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="4996"></a>4996</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4997"></a>4997</td><td></td><td></td><td></td><td></td><td class="s">         # Recur;Delta</td></tr>
<tr><td class="h"><a name="4998"></a>4998</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="4999"></a>4999</td><td></td><td></td><td></td><td></td><td class="s">         my $r = $self-&gt;new_recur();</td></tr>
<tr><td class="h"><a name="5000"></a>5000</td><td></td><td></td><td></td><td></td><td class="s">         $err  = $r-&gt;parse($o1);</td></tr>
<tr><td class="h"><a name="5001"></a>5001</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5002"></a>5002</td><td></td><td></td><td></td><td></td><td class="s">         my $del = $self-&gt;new_delta();</td></tr>
<tr><td class="h"><a name="5003"></a>5003</td><td></td><td></td><td></td><td></td><td class="s">         if (! $err) {</td></tr>
<tr><td class="h"><a name="5004"></a>5004</td><td></td><td></td><td></td><td></td><td class="s">            $err    = $del-&gt;parse($o2);</td></tr>
<tr><td class="h"><a name="5005"></a>5005</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="5006"></a>5006</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5007"></a>5007</td><td></td><td></td><td></td><td></td><td class="s">         if ($err) {</td></tr>
<tr><td class="h"><a name="5008"></a>5008</td><td></td><td></td><td></td><td></td><td class="s">            warn &quot;ERROR: invalid event definition (must be Date;Date, YMD;YMD, &quot;</td></tr>
<tr><td class="h"><a name="5009"></a>5009</td><td></td><td></td><td></td><td></td><td class="s">              .  &quot;       YM;YM, Date;Delta, or Recur;Delta)\n&quot;</td></tr>
<tr><td class="h"><a name="5010"></a>5010</td><td></td><td></td><td></td><td></td><td class="s">              . &quot;        $string\n&quot;;</td></tr>
<tr><td class="h"><a name="5011"></a>5011</td><td></td><td></td><td></td><td></td><td class="s">            next;</td></tr>
<tr><td class="h"><a name="5012"></a>5012</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="5013"></a>5013</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5014"></a>5014</td><td></td><td></td><td></td><td></td><td class="s">         $del  = $del-&gt;calc($M1);</td></tr>
<tr><td class="h"><a name="5015"></a>5015</td><td></td><td></td><td></td><td></td><td class="s">         my @d = $r-&gt;dates();</td></tr>
<tr><td class="h"><a name="5016"></a>5016</td><td></td><td></td><td></td><td></td><td class="s">         if (@d) {</td></tr>
<tr><td class="h"><a name="5017"></a>5017</td><td></td><td></td><td></td><td></td><td class="s">            foreach my $d1 (@d) {</td></tr>
<tr><td class="h"><a name="5018"></a>5018</td><td></td><td></td><td></td><td></td><td class="s">               my $d2 = $d1-&gt;calc($del);</td></tr>
<tr><td class="h"><a name="5019"></a>5019</td><td></td><td></td><td></td><td></td><td class="s">               $$dmb{'data'}{'events'}{$i++} = { 'type' =&gt; 'specified',</td></tr>
<tr><td class="h"><a name="5020"></a>5020</td><td></td><td></td><td></td><td></td><td class="s">                                                 'name' =&gt; $name,</td></tr>
<tr><td class="h"><a name="5021"></a>5021</td><td></td><td></td><td></td><td></td><td class="s">                                                 'beg'  =&gt; $d1,</td></tr>
<tr><td class="h"><a name="5022"></a>5022</td><td></td><td></td><td></td><td></td><td class="s">                                                 'end'  =&gt; $d2</td></tr>
<tr><td class="h"><a name="5023"></a>5023</td><td></td><td></td><td></td><td></td><td class="s">                                               };</td></tr>
<tr><td class="h"><a name="5024"></a>5024</td><td></td><td></td><td></td><td></td><td class="s">            }</td></tr>
<tr><td class="h"><a name="5025"></a>5025</td><td></td><td></td><td></td><td></td><td class="s">         } else {</td></tr>
<tr><td class="h"><a name="5026"></a>5026</td><td></td><td></td><td></td><td></td><td class="s">            $$dmb{'data'}{'events'}{$i++} = { 'type'  =&gt; 'recur',</td></tr>
<tr><td class="h"><a name="5027"></a>5027</td><td></td><td></td><td></td><td></td><td class="s">                                              'name'  =&gt; $name,</td></tr>
<tr><td class="h"><a name="5028"></a>5028</td><td></td><td></td><td></td><td></td><td class="s">                                              'recur' =&gt; $r,</td></tr>
<tr><td class="h"><a name="5029"></a>5029</td><td></td><td></td><td></td><td></td><td class="s">                                              'delta' =&gt; $del</td></tr>
<tr><td class="h"><a name="5030"></a>5030</td><td></td><td></td><td></td><td></td><td class="s">                                            };</td></tr>
<tr><td class="h"><a name="5031"></a>5031</td><td></td><td></td><td></td><td></td><td class="s">         }</td></tr>
<tr><td class="h"><a name="5032"></a>5032</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5033"></a>5033</td><td></td><td></td><td></td><td></td><td class="s">      } else {</td></tr>
<tr><td class="h"><a name="5034"></a>5034</td><td></td><td></td><td></td><td></td><td class="s">         warn &quot;ERROR: invalid event definition\n&quot;</td></tr>
<tr><td class="h"><a name="5035"></a>5035</td><td></td><td></td><td></td><td></td><td class="s">            . &quot;       $string\n&quot;;</td></tr>
<tr><td class="h"><a name="5036"></a>5036</td><td></td><td></td><td></td><td></td><td class="s">         next;</td></tr>
<tr><td class="h"><a name="5037"></a>5037</td><td></td><td></td><td></td><td></td><td class="s">      }</td></tr>
<tr><td class="h"><a name="5038"></a>5038</td><td></td><td></td><td></td><td></td><td class="s">   }</td></tr>
<tr><td class="h"><a name="5039"></a>5039</td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h"><a name="5040"></a>5040</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="5041"></a>5041</td><td class="c3">1</td><td class="c3"><span title="Avg 3µs">3µs</span></td><td></td><td></td><td class="s">1;</td></tr>
<tr><td class="h"><a name="5042"></a>5042</td><td></td><td></td><td></td><td></td><td class="s"># Local Variables:</td></tr>
<tr><td class="h"><a name="5043"></a>5043</td><td></td><td></td><td></td><td></td><td class="s"># mode: cperl</td></tr>
<tr><td class="h"><a name="5044"></a>5044</td><td></td><td></td><td></td><td></td><td class="s"># indent-tabs-mode: nil</td></tr>
<tr><td class="h"><a name="5045"></a>5045</td><td></td><td></td><td></td><td></td><td class="s"># cperl-indent-level: 3</td></tr>
<tr><td class="h"><a name="5046"></a>5046</td><td></td><td></td><td></td><td></td><td class="s"># cperl-continued-statement-offset: 2</td></tr>
<tr><td class="h"><a name="5047"></a>5047</td><td></td><td></td><td></td><td></td><td class="s"># cperl-continued-brace-offset: 0</td></tr>
<tr><td class="h"><a name="5048"></a>5048</td><td></td><td></td><td></td><td></td><td class="s"># cperl-brace-offset: 0</td></tr>
<tr><td class="h"><a name="5049"></a>5049</td><td></td><td></td><td></td><td></td><td class="s"># cperl-brace-imaginary-offset: 0</td></tr>
<tr><td class="h"><a name="5050"></a>5050</td><td></td><td></td><td></td><td></td><td class="s"># cperl-label-offset: 0</td></tr>
<tr><td class="h"><a name="5051"></a>5051</td><td></td><td></td><td></td><td></td><td class="s"># End:</td></tr>
<tr><td class="s"><a name=""></a>&nbsp;</td><td></td><td></td><td></td><td></td><td class="s"></td></tr>
<tr><td class="h"><a name="Date__Manip__Date__CORE_match"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 31.1ms within Date::Manip::Date::CORE:match which was called 14640 times, avg 2µs/call:
# 4872 times (12.1ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1648">line 1648</a>, avg 2µs/call
# 2442 times (4.12ms+0s) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1727">line 1727</a>, avg 2µs/call
# 2442 times (3.95ms+0s) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1712">line 1712</a>, avg 2µs/call
# 2436 times (8.04ms+0s) by Date::Manip::Date::_parse_datetime_iso8601 at <a href="Date-Manip-Date-pm-12-line.html#1236">line 1236</a>, avg 3µs/call
# 2436 times (2.91ms+0s) by Date::Manip::Date::_parse_datetime_other at <a href="Date-Manip-Date-pm-12-line.html#1901">line 1901</a>, avg 1µs/call
#   12 times (29µs+0s) by Date::Manip::Date::_parse_date_other at <a href="Date-Manip-Date-pm-12-line.html#1991">line 1991</a>, avg 2µs/call</div></div>sub Date::Manip::Date::CORE:match; # opcode<br />        </td></tr>
<tr><td class="h"><a name="Date__Manip__Date__CORE_qr"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 18µs within Date::Manip::Date::CORE:qr which was called 15 times, avg 1µs/call:
#    once (5µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1498">line 1498</a>
#    once (2µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1123">line 1123</a>
#    once (2µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1599">line 1599</a>
#    once (1µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1171">line 1171</a>
#    once (1µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1215">line 1215</a>
#    once (1µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1489">line 1489</a>
#    once (900ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1536">line 1536</a>
#    once (800ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1421">line 1421</a>
#    once (700ns+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1213">line 1213</a>
#    once (700ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1442">line 1442</a>
#    once (700ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1499">line 1499</a>
#    once (600ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1420">line 1420</a>
#    once (600ns+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1507">line 1507</a>
#    once (600ns+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1138">line 1138</a>
#    once (400ns+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1176">line 1176</a></div></div>sub Date::Manip::Date::CORE:qr; # opcode<br />        </td></tr>
<tr><td class="h"><a name="Date__Manip__Date__CORE_regcomp"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 36.1ms within Date::Manip::Date::CORE:regcomp which was called 21968 times, avg 2µs/call:
# 4872 times (1.86ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1648">line 1648</a>, avg 383ns/call
# 2442 times (3.37ms+0s) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1727">line 1727</a>, avg 1µs/call
# 2442 times (1.56ms+0s) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1712">line 1712</a>, avg 638ns/call
# 2442 times (1.09ms+0s) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#430">line 430</a>, avg 446ns/call
# 2436 times (5.16ms+0s) by Date::Manip::Date::_parse_datetime_iso8601 at <a href="Date-Manip-Date-pm-12-line.html#1236">line 1236</a>, avg 2µs/call
# 2436 times (1.76ms+0s) by Date::Manip::Date::_parse_datetime_other at <a href="Date-Manip-Date-pm-12-line.html#1901">line 1901</a>, avg 721ns/call
# 2436 times (1.49ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1662">line 1662</a>, avg 611ns/call
# 2436 times (1.36ms+0s) by Date::Manip::Date::_parse_dow at <a href="Date-Manip-Date-pm-12-line.html#1767">line 1767</a>, avg 560ns/call
#   12 times (41µs+0s) by Date::Manip::Date::_parse_date_other at <a href="Date-Manip-Date-pm-12-line.html#1991">line 1991</a>, avg 3µs/call
#       once (5.10ms+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1215">line 1215</a>
#       once (4.87ms+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1536">line 1536</a>
#       once (2.74ms+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1171">line 1171</a>
#       once (2.49ms+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1421">line 1421</a>
#       once (2.09ms+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1599">line 1599</a>
#       once (879µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1489">line 1489</a>
#       once (154µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1123">line 1123</a>
#       once (35µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1499">line 1499</a>
#       once (35µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1138">line 1138</a>
#       once (21µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1442">line 1442</a>
#       once (11µs+0s) by Date::Manip::Date::_iso8601_rx at <a href="Date-Manip-Date-pm-12-line.html#1176">line 1176</a>
#       once (9µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1507">line 1507</a>
#       once (8µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1420">line 1420</a>
#       once (8µs+0s) by Date::Manip::Date::_other_rx at <a href="Date-Manip-Date-pm-12-line.html#1498">line 1498</a></div></div>sub Date::Manip::Date::CORE:regcomp; # opcode<br />        </td></tr>
<tr><td class="h"><a name="Date__Manip__Date__CORE_subst"></a></td><td></td><td></td><td></td><td></td><td class="s"><div class="calls"><div class="calls_in"># spent 60.2ms within Date::Manip::Date::CORE:subst which was called 26750 times, avg 2µs/call:
# 2442 times (3.23ms+0s) by Date::Manip::Date::_parse_date_common at <a href="Date-Manip-Date-pm-12-line.html#1706">line 1706</a>, avg 1µs/call
# 2442 times (2.83ms+0s) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#430">line 430</a>, avg 1µs/call
# 2442 times (2.65ms+0s) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#433">line 433</a>, avg 1µs/call
# 2442 times (508µs+0s) by Date::Manip::Date::_parse_date at <a href="Date-Manip-Date-pm-12-line.html#423">line 423</a>, avg 208ns/call
# 2436 times (34.0ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1662">line 1662</a>, avg 14µs/call
# 2436 times (4.39ms+0s) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#154">line 154</a>, avg 2µs/call
# 2436 times (4.03ms+0s) by Date::Manip::Date::_parse_time at <a href="Date-Manip-Date-pm-12-line.html#1668">line 1668</a>, avg 2µs/call
# 2436 times (3.61ms+0s) by Date::Manip::Date::_parse_dow at <a href="Date-Manip-Date-pm-12-line.html#1767">line 1767</a>, avg 1µs/call
# 2436 times (637µs+0s) by Date::Manip::Date::parse at <a href="Date-Manip-Date-pm-12-line.html#155">line 155</a>, avg 262ns/call
# 2401 times (3.01ms+0s) by Date::Manip::Date::_parse_dow at <a href="Date-Manip-Date-pm-12-line.html#1779">line 1779</a>, avg 1µs/call
# 2401 times (1.37ms+0s) by Date::Manip::Date::_parse_dow at <a href="Date-Manip-Date-pm-12-line.html#1780">line 1780</a>, avg 570ns/call</div></div>sub Date::Manip::Date::CORE:subst; # opcode<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 5.06</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>