<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.22.2.2</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>217</ContextCount>
  <ElementCount>309</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>true</FootnotesReported>
  <SegmentCount>54</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>10</UnitCount>
  <MyReports>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R1.htm</HtmlFileName>
      <LongName>000 - Document - Document And Entity Information</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-document-and-entity-information</Role>
      <ShortName>Document And Entity Information</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>1</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>001 - Statement - Consolidated Statements of Operations (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-statements-of-operations-unaudited</Role>
      <ShortName>Consolidated Statements of Operations (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>002 - Statement - Consolidated Statements of Comprehensive Income (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-statements-of-comprehensive-income-unaudited</Role>
      <ShortName>Consolidated Statements of Comprehensive Income (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>3</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>003 - Statement - Consolidated Balance Sheets (Current Period Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-balance-sheets-current-period-unaudited</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>4</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>004 - Statement - Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-balance-sheets-current-period-unaudited-parentheticals</Role>
      <ShortName>Consolidated Balance Sheets (Current Period Unaudited) (Parentheticals)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>005 - Statement - Consolidated Statements of Stockholders' Equity (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-statements-of-stockholders-equity-unaudited</Role>
      <ShortName>Consolidated Statements of Stockholders' Equity (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>6</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>006 - Statement - Consolidated Statements of Cash Flows (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-consolidated-statements-of-cash-flows-unaudited</Role>
      <ShortName>Consolidated Statements of Cash Flows (Unaudited)</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>7</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>007 - Disclosure - Note 1 - Basis of Presentation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-1-basis-of-presentation</Role>
      <ShortName>Note 1 - Basis of Presentation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>8</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>008 - Disclosure - Note 2 - Business Segment Reporting</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-2-business-segment-reporting</Role>
      <ShortName>Note 2 - Business Segment Reporting</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>9</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.htm</HtmlFileName>
      <LongName>009 - Disclosure - Note 3 - Accounts Receivable</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-3-accounts-receivable</Role>
      <ShortName>Note 3 - Accounts Receivable</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>10</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.htm</HtmlFileName>
      <LongName>010 - Disclosure - Note 4 - Revenue Recognition</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition</Role>
      <ShortName>Note 4 - Revenue Recognition</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>11</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.htm</HtmlFileName>
      <LongName>011 - Disclosure - Note 5 - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-5-income-taxes</Role>
      <ShortName>Note 5 - Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>12</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.htm</HtmlFileName>
      <LongName>012 - Disclosure - Note 6 - Impairment of Long-lived Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets</Role>
      <ShortName>Note 6 - Impairment of Long-lived Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>13</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>013 - Disclosure - Note 7 - Stock-based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation</Role>
      <ShortName>Note 7 - Stock-based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>014 - Disclosure - Note 8 - Retirement Plans</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-8-retirement-plans</Role>
      <ShortName>Note 8 - Retirement Plans</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>15</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>015 - Disclosure - Note 9 - Earnings Per Share</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-9-earnings-per-share</Role>
      <ShortName>Note 9 - Earnings Per Share</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>016 - Disclosure - Note 10 - Debt</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-10-debt</Role>
      <ShortName>Note 10 - Debt</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>017 - Disclosure - Note 11 - Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases</Role>
      <ShortName>Note 11 - Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>018 - Disclosure - Note 12 - Restricted Cash</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash</Role>
      <ShortName>Note 12 - Restricted Cash</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>019 - Disclosure - Note 13 - Fair Value</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-13-fair-value-</Role>
      <ShortName>Note 13 - Fair Value</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>020 - Disclosure - Note 14 - Recent Accounting Pronouncements</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-14-recent-accounting-pronouncements-</Role>
      <ShortName>Note 14 - Recent Accounting Pronouncements</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>021 - Disclosure - Note 15 - Treasury Stock</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock</Role>
      <ShortName>Note 15 - Treasury Stock</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>022 - Disclosure - Significant Accounting Policies (Policies)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-significant-accounting-policies-policies</Role>
      <ShortName>Significant Accounting Policies (Policies)</ShortName>
      <MenuCategory>Policies</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-14-recent-accounting-pronouncements-</ParentRole>
      <Position>23</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>023 - Disclosure - Note 4 - Revenue Recognition (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition-tables</Role>
      <ShortName>Note 4 - Revenue Recognition (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition</ParentRole>
      <Position>24</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>024 - Disclosure - Note 6 - Impairment of Long-lived Assets (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets-tables</Role>
      <ShortName>Note 6 - Impairment of Long-lived Assets (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets</ParentRole>
      <Position>25</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>025 - Disclosure - Note 7 - Stock-based Compensation (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-tables</Role>
      <ShortName>Note 7 - Stock-based Compensation (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation</ParentRole>
      <Position>26</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>026 - Disclosure - Note 9 - Earnings Per Share (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-9-earnings-per-share-tables</Role>
      <ShortName>Note 9 - Earnings Per Share (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-9-earnings-per-share</ParentRole>
      <Position>27</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>027 - Disclosure - Note 11 - Leases (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-tables</Role>
      <ShortName>Note 11 - Leases (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-11-leases</ParentRole>
      <Position>28</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>028 - Disclosure - Note 12 - Restricted Cash (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash-tables</Role>
      <ShortName>Note 12 - Restricted Cash (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash</ParentRole>
      <Position>29</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>029 - Disclosure - Note 15 - Treasury Stock (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock-tables</Role>
      <ShortName>Note 15 - Treasury Stock (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock</ParentRole>
      <Position>30</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>030 - Disclosure - Note 2 - Business Segment Reporting (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-2-business-segment-reporting-details-textual</Role>
      <ShortName>Note 2 - Business Segment Reporting (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-2-business-segment-reporting</ParentRole>
      <Position>31</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>031 - Disclosure - Note 3 - Accounts Receivable (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-3-accounts-receivable-details-textual</Role>
      <ShortName>Note 3 - Accounts Receivable (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-3-accounts-receivable</ParentRole>
      <Position>32</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>032 - Disclosure - Note 4 - Revenue Recognition (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition-details-textual</Role>
      <ShortName>Note 4 - Revenue Recognition (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition-tables</ParentRole>
      <Position>33</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>033 - Disclosure - Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition-revenues-by-revenue-class-details</Role>
      <ShortName>Note 4 - Revenue Recognition - Revenues by Revenue Class (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>34</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R35.htm</HtmlFileName>
      <LongName>034 - Disclosure - Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-4-revenue-recognition-reconciliation-of-the-cost-in-excess-of-billings-details</Role>
      <ShortName>Note 4 - Revenue Recognition - Reconciliation of the Cost in Excess of Billings (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>35</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R36.htm</HtmlFileName>
      <LongName>035 - Disclosure - Note 5 - Income Taxes (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-5-income-taxes-details-textual</Role>
      <ShortName>Note 5 - Income Taxes (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-5-income-taxes</ParentRole>
      <Position>36</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R37.htm</HtmlFileName>
      <LongName>036 - Disclosure - Note 6 - Impairment of Long-lived Assets (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets-details-textual</Role>
      <ShortName>Note 6 - Impairment of Long-lived Assets (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets-tables</ParentRole>
      <Position>37</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R38.htm</HtmlFileName>
      <LongName>037 - Disclosure - Note 6 - Impairment of Long-lived Assets - Goodwill (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-6-impairment-of-longlived-assets-goodwill-details</Role>
      <ShortName>Note 6 - Impairment of Long-lived Assets - Goodwill (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>38</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>038 - Disclosure - Note 7 - Stock-based Compensation (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-details-textual</Role>
      <ShortName>Note 7 - Stock-based Compensation (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-tables</ParentRole>
      <Position>39</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>039 - Disclosure - Note 7 - Stock-based Compensation - Stock-based Compensation Expense (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-stockbased-compensation-expense-details</Role>
      <ShortName>Note 7 - Stock-based Compensation - Stock-based Compensation Expense (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>40</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>040 - Disclosure - Note 7 - Stock-based Compensation - Stock Option Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-stock-option-activity-details</Role>
      <ShortName>Note 7 - Stock-based Compensation - Stock Option Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>41</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>041 - Disclosure - Note 7 - Stock-based Compensation - Restricted Stock Activity (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-7-stockbased-compensation-restricted-stock-activity-details</Role>
      <ShortName>Note 7 - Stock-based Compensation - Restricted Stock Activity (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>42</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>042 - Disclosure - Note 8 - Retirement Plans (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-8-retirement-plans-details-textual</Role>
      <ShortName>Note 8 - Retirement Plans (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-8-retirement-plans</ParentRole>
      <Position>43</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>043 - Disclosure - Note 9 - Earnings Per Share - Summary of Earnings Per Share (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-9-earnings-per-share-summary-of-earnings-per-share-details</Role>
      <ShortName>Note 9 - Earnings Per Share - Summary of Earnings Per Share (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>44</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>044 - Disclosure - Note 10 - Debt (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-10-debt-details-textual</Role>
      <ShortName>Note 10 - Debt (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-10-debt</ParentRole>
      <Position>45</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>045 - Disclosure - Note 11 - Leases (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-details-textual</Role>
      <ShortName>Note 11 - Leases (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-11-leases-tables</ParentRole>
      <Position>46</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>046 - Disclosure - Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-supplemental-balance-sheet-information-related-to-leases-details</Role>
      <ShortName>Note 11 - Leases - Supplemental Balance Sheet Information Related to Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>47</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>047 - Disclosure - Note 11 - Leases - Lease Costs (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-lease-costs-details</Role>
      <ShortName>Note 11 - Leases - Lease Costs (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>48</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>048 - Disclosure - Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-supplemental-cash-flow-information-related-to-leases-details</Role>
      <ShortName>Note 11 - Leases - Supplemental Cash Flow Information Related to Leases (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>49</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>049 - Disclosure - Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-weightedaverage-lease-terms-and-discount-rates-details</Role>
      <ShortName>Note 11 - Leases - Weighted-average Lease Terms and Discount Rates (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>50</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>050 - Disclosure - Note 11 - Leases - Maturities of Lease Liabilities (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-11-leases-maturities-of-lease-liabilities-details</Role>
      <ShortName>Note 11 - Leases - Maturities of Lease Liabilities (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>051 - Disclosure - Note 12 - Restricted Cash (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash-details-textual</Role>
      <ShortName>Note 12 - Restricted Cash (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash-tables</ParentRole>
      <Position>52</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>052 - Disclosure - Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-12-restricted-cash-summary-of-cash-cash-equivalents-and-restricted-cash-details</Role>
      <ShortName>Note 12 - Restricted Cash - Summary of Cash, Cash Equivalents and Restricted Cash (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>53</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.htm</HtmlFileName>
      <LongName>053 - Disclosure - Note 15 - Treasury Stock (Details Textual)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock-details-textual</Role>
      <ShortName>Note 15 - Treasury Stock (Details Textual)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock-tables</ParentRole>
      <Position>54</Position>
    </Report>
    <Report instance="ppih20221031_10q.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.htm</HtmlFileName>
      <LongName>054 - Disclosure - Note 15 - Treasury Stock - Repurchases of Common Stock (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://investors.permapipe.com/20221031/role/statement-note-15-treasury-stock-repurchases-of-common-stock-details</Role>
      <ShortName>Note 15 - Treasury Stock - Repurchases of Common Stock (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>55</Position>
    </Report>
    <Report>
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <LongName>All Reports</LongName>
      <ReportType>Book</ReportType>
      <ShortName>All Reports</ShortName>
    </Report>
  </MyReports>
  <Logs>
    <Log type="Warning">[ix-0514-Hidden-Fact-Eligible-For-Transform] WARN: 40 fact(s) appearing in ix:hidden were eligible for transformation: dei:EntityRegistrantName, ppih:AllowanceForDoubtfulAccountsReceivableOutstandingForSeveralYears, ppih:CostsIncurredForUncompletedContractsAnticipatedCollectionPeriod, ppih:InsuranceProceedsOffsetByWriteOffOfDamagedInventoryAndFixedAssets, ppih:LesseeFinanceLeaseNumberOfOptionsToExtend, ppih:NumberOfMajorCustomers, us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent, us-gaap:CommonStockParOrStatedValuePerShare, us-gaap:CommonStockSharesAuthorized, us-gaap:CommonStockSharesIssued, us-gaap:CommonStockSharesOutstanding, us-gaap:DebtInstrumentIssuanceDate1, us-gaap:DebtInstrumentMaturityDate, us-gaap:DebtInstrumentTerm, us-gaap:DefinedBenefitPlanRecognizedNetGainLossDueToSettlements1, us-gaap:GoodwillImpairmentLoss, us-gaap:ImpairmentOfLongLivedAssetsHeldForUse, us-gaap:LesseeFinanceLeaseRenewalTerm1, us-gaap:LesseeFinanceLeaseTermOfContract1, us-gaap:LesseeOperatingLeaseTermOfContract, us-gaap:LineOfCreditFacilityInterestRateAtPeriodEnd, us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent, us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross, us-gaap:TreasuryStockShares -  ppih20221031_10q.htm 8, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51</Log>
  </Logs>
  <InputFiles>
    <File doctype="10-Q" original="ppih20221031_10q.htm">ppih20221031_10q.htm</File>
    <File>ex_420846.htm</File>
    <File>ex_420847.htm</File>
    <File>ex_420848.htm</File>
    <File>ppih-20221031.xsd</File>
    <File>ppih-20221031_cal.xml</File>
    <File>ppih-20221031_def.xml</File>
    <File>ppih-20221031_lab.xml</File>
    <File>ppih-20221031_pre.xml</File>
  </InputFiles>
  <SupplementalFiles>
    <File>permapipelogo10q.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy items="768">http://fasb.org/us-gaap/2022</BaseTaxonomy>
    <BaseTaxonomy items="29">http://xbrl.sec.gov/dei/2022</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
