The thing PDL is best for is rectangular, in-memory data. Then you can achieve incredibly terse, powerful, fast-running code. Iterators are a bit of a roadblock to this, though with sufficient "chunking" to read blocks of data and processing those (if the application allows), it may still be possible.
If you want to work with gigantic data that sufficiently appears "in-memory", there's memory-mapping with PDL::IO::FastRaw.