US

US.pm
The US module may be configured to call the proper sub modules and return a shallow hash of the data:
methods
new()
Payroll::US->calculate(gross, date, method, allowances, period, marital, grossYTD)
returns hash of {FedIncome} = X, {Medicare} = Y, {FICA} = Z
errorMessage
setError
didErrorOccur
isValid
sub calculate
{
#validate inputs
# new Payroll::US::FedIncome
# new Payroll::US::FICA
# new Payroll::US::Medicare
#hash{FedIncome} = Payroll::US::FedIncome->calculate(
#hash{Medicare} = Payroll::US::Medicare->calculate(
#hash{FICA} = Payroll::US::FICA->calculate(
#validate output
#return hash
}