in reply to Nested Statement

Couple of comments:

First, I'm not sure your code computes the 45-th business day from the current day. Instead, I think it computes the business day which is 45 calendar days from the current day.

It is clear that from your script that it would be helpful to encapsulate your business date logic into a module. One option is Date::Business which will do what you want with the nextb() method. Actually, I would recommend implementing this in the database itself with a "business day" table. The schema would look something like this:

CREATE TABLE BUSINESS_DAY ( BUSINESS_DAY_ORDINAL INT PRIMARY KEY, CALENDAR_DAY DATE ); CREATE TABLE CALENDAR_DAY ( CALENDAR_DAY DATE PRIMARY KEY, BUSINESS_DAY_ORDINAL INT, NEXT_BUSINESS_DAY_ORDINAL INT );

BUSINESS_DAY_ORDINAL gives the business day on or before the specified calendar day and NEXT_BUSINESS_DAY_ORDINAL gives the first business day after the specified calendar day. The advantage of doing this is that you can calculate with business days in your SQL rather than relying on a perl script. Additionally, you can implement irregular rules for business days such as holidays. Of course, you can use a perl script to initially populate these tables.