XML 47 R6.htm IDEA: XBRL DOCUMENT v2.4.1.9
CONSOLIDATED STATEMENTS OF CHANGES IN STOCKHOLDERS' EQUITY (USD $)
In Thousands, except Share data
Common Stock [Member]
Additional Paid-in Capital [Member]
Accumulated Other Comprehensive Loss [Member]
Treasury Stock [Member]
Retained Earnings (Deficit) [Member]
Total
Balance at Dec. 31, 2011 $ 36us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
$ 248,855us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
$ (279)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
$ (54,995)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
$ 5,342us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
$ 198,959us-gaap_StockholdersEquity
Balance (in shares) at Dec. 31, 2011 28,743,000us-gaap_CommonStockSharesOutstanding
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan 0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
202us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
202us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan (in shares) 56,000prft_StockIssuedDuringPeriodSharesStockOptionsExercisedAndStockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net tax benefit from stock option exercises and restricted stock vesting 0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
855us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
855us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
Stock compensation related to restricted stock vesting and retirement savings plan contributions 1us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
9,589us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
9,590us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
Stock compensation related to restricted stock vesting and retirement savings plan contributions (in shares) 950,000prft_StockCompensationRelatedToRestrictedStockVestingAndRetirementSavingsPlanContributionsShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Purchases of treasury stock 0prft_PurchaseOfTreasuryStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0prft_PurchaseOfTreasuryStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0prft_PurchaseOfTreasuryStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(7,975)prft_PurchaseOfTreasuryStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0prft_PurchaseOfTreasuryStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(7,975)prft_PurchaseOfTreasuryStock
Purchases of treasury stock (in shares) (724,000)prft_PurchaseOfTreasuryStockShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Issuance of stock for acquisitions 2us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
16,700us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
16,702us-gaap_StockIssuedDuringPeriodValueAcquisitions
Issuance of stock for acquisitions (in shares) 1,800,000us-gaap_StockIssuedDuringPeriodSharesAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net income 0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
16,107us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
16,107us-gaap_NetIncomeLoss
Foreign currency translation adjustment 0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
(27)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(27)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
Balance at Dec. 31, 2012 39us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
276,201us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
(306)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(62,970)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
21,449us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
234,413us-gaap_StockholdersEquity
Balance (in shares) at Dec. 31, 2012 30,825,000us-gaap_CommonStockSharesOutstanding
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan 0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
332us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
332us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan (in shares) 80,000prft_StockIssuedDuringPeriodSharesStockOptionsExercisedAndStockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net tax benefit from stock option exercises and restricted stock vesting 0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
2,578us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
2,578us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
Stock compensation related to restricted stock vesting and retirement savings plan contributions 0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
11,034us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
11,034us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
Stock compensation related to restricted stock vesting and retirement savings plan contributions (in shares) 949,000prft_StockCompensationRelatedToRestrictedStockVestingAndRetirementSavingsPlanContributionsShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Purchases of treasury stock and buyback of shares for taxes 0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(18,081)us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(18,081)us-gaap_PaymentsForRepurchaseOfCommonStock
Purchases of treasury stock and buyback of shares for taxes (in shares) (1,313,000)us-gaap_StockRepurchasedDuringPeriodShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Issuance of stock for acquisitions 2us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
7,852us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
7,854us-gaap_StockIssuedDuringPeriodValueAcquisitions
Issuance of stock for acquisitions (in shares) 800,000us-gaap_StockIssuedDuringPeriodSharesAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net income 0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
21,432us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
21,432us-gaap_NetIncomeLoss
Foreign currency translation adjustment 0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
(72)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(72)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
Balance at Dec. 31, 2013 41us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
297,997us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
(378)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(81,051)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
42,881us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
259,490us-gaap_StockholdersEquity
Balance (in shares) at Dec. 31, 2013 31,341,000us-gaap_CommonStockSharesOutstanding
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
        31,341,276us-gaap_CommonStockSharesOutstanding
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan 0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
1,451us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
1,451us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised
Proceeds from the exercise of stock options and sales of stock through the Employee Stock Purchase Plan (in shares) 210,000prft_StockIssuedDuringPeriodSharesStockOptionsExercisedAndStockIssuedDuringPeriodSharesEmployeeStockPurchasePlans
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net tax benefit from stock option exercises and restricted stock vesting 0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
2,577us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
2,577us-gaap_AdjustmentsToAdditionalPaidInCapitalTaxEffectFromShareBasedCompensation
Stock compensation related to restricted stock vesting and retirement savings plan contributions 1us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
12,718us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
12,719us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
Stock compensation related to restricted stock vesting and retirement savings plan contributions (in shares) 961,000prft_StockCompensationRelatedToRestrictedStockVestingAndRetirementSavingsPlanContributionsShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Purchases of treasury stock and buyback of shares for taxes 0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
(14,302)us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_PaymentsForRepurchaseOfCommonStock
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(14,302)us-gaap_PaymentsForRepurchaseOfCommonStock
Purchases of treasury stock and buyback of shares for taxes (in shares) (807,000)us-gaap_StockRepurchasedDuringPeriodShares
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Issuance of stock for acquisitions 1us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
19,902us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_StockIssuedDuringPeriodValueAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
19,903us-gaap_StockIssuedDuringPeriodValueAcquisitions
Issuance of stock for acquisitions (in shares) 1,150,000us-gaap_StockIssuedDuringPeriodSharesAcquisitions
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
         
Net income 0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
23,163us-gaap_NetIncomeLoss
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
23,163us-gaap_NetIncomeLoss
Foreign currency translation adjustment 0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
(273)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
0us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
(273)us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
Balance at Dec. 31, 2014 $ 43us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
$ 334,645us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AdditionalPaidInCapitalMember
$ (651)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_AccumulatedOtherComprehensiveIncomeMember
$ (95,353)us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_TreasuryStockMember
$ 66,044us-gaap_StockholdersEquity
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_RetainedEarningsMember
$ 304,728us-gaap_StockholdersEquity
Balance (in shares) at Dec. 31, 2014 32,855,000us-gaap_CommonStockSharesOutstanding
/ us-gaap_StatementEquityComponentsAxis
= us-gaap_CommonStockMember
        32,854,802us-gaap_CommonStockSharesOutstanding