NAME
Win32::Pipe::PP - Pure Perl replacement for Win32::Pipe using Win32::API
OVERVIEW
This module provides a pure Perl implementation of Win32::Pipe, using Win32::API to bind directly to native Windows system calls. It is designed as a drop-in replacement for the original XS-based module, with API compatibility and improved maintainability.
GOALS
Eliminate XS dependency for easier installation and portability
Provide full API compatibility with Win32::Pipe
Support IPC integration via
get_Win32_IPC_HANDLE
Enable modular testing and extensibility
DIFFERENCES
No XS or compiled components - implemented entirely in Perl
Message mode and advanced flags are simplified or stubbed
Overlapped I/O is not yet supported
IMPROVEMENTS
Read()
handles ERROR_MORE_DATA correctly and returns complete dataConsistent error reporting via
Error()
IPC compatibility without inheritance - via
get_Win32_IPC_HANDLE
Clean separation of pipe handle and metadata for event loops
PROJECT STRUCTURE
This distribution follows CPAN best practices for layout and packaging:
Win32-Pipe-PP/
!
+-- LICENSE # MIT license text
+-- Makefile.PL # Build script using ExtUtils::MakeMaker
+-- Changes # Version history and release notes
+-- MANIFEST.SKIP # Patterns to exclude from MANIFEST
+-- MANIFEST # List of files included in the CPAN distribution
+-- .gitignore # Git exclusion rules for build artifacts, etc.
+-- README.pod # Project overview, goals, differences
+-- lib/
! '-- Win32/
! '-- Pipe/
! '-- PP.pm # Main module with full POD
+-- t/ # Public test suite (runs via "make test")
! +-- 01_load.t # Constructor usage
! +-- 02_api_compat.t # API compatibility with XS version
! +-- 03_behavior.t # Expected behavior under normal conditions
! +-- 04_error_codes.t # Error handling and return values
! +-- 05_read_write.t # Client server test
! +-- 06_ipc_support.t # Compatibility with Win32::IPC::wait_any
+-- .github/
! '-- workflows/
! '-- ci.yml # GitHub Actions workflow for automated testing
AUTHOR
J. Schneider <brickpool@cpan.org>
LICENSE
MIT License - see LICENSE file for full text. However, this library distributes and references code from other open source projects that have their own licenses.
CREDITS
Special thanks go to David Roth for creating Win32::Pipe