D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
cpanel
/
perl5
/
530
/
site_lib
/
Perl
/
Tidy
/
Filename :
IOScalarArray.pm
back
Copy
##################################################################### # # This is a stripped down version of IO::ScalarArray # Given a reference to an array, it supplies either: # a getline method which reads lines (mode='r'), or # a print method which reads lines (mode='w') # # NOTE: this routine assumes that there aren't any embedded # newlines within any of the array elements. There are no checks # for that. # ##################################################################### package Perl::Tidy::IOScalarArray; use strict; use warnings; use Carp; our $VERSION = '20200110'; sub new { my ( $package, $rarray, $mode ) = @_; my $ref = ref $rarray; if ( $ref ne 'ARRAY' ) { confess <<EOM; ------------------------------------------------------------------------ expecting ref to ARRAY but got ref to ($ref); trace follows: ------------------------------------------------------------------------ EOM } if ( $mode eq 'w' ) { @{$rarray} = (); return bless [ $rarray, $mode ], $package; } elsif ( $mode eq 'r' ) { my $i_next = 0; return bless [ $rarray, $mode, $i_next ], $package; } else { confess <<EOM; ------------------------------------------------------------------------ expecting mode = 'r' or 'w' but got mode ($mode); trace follows: ------------------------------------------------------------------------ EOM } } sub getline { my $self = shift; my $mode = $self->[1]; if ( $mode ne 'r' ) { confess <<EOM; ------------------------------------------------------------------------ getline requires mode = 'r' but mode = ($mode); trace follows: ------------------------------------------------------------------------ EOM } my $i = $self->[2]++; return $self->[0]->[$i]; } sub print { my ( $self, $msg ) = @_; my $mode = $self->[1]; if ( $mode ne 'w' ) { confess <<EOM; ------------------------------------------------------------------------ print requires mode = 'w' but mode = ($mode); trace follows: ------------------------------------------------------------------------ EOM } push @{ $self->[0] }, $msg; return; } sub close { return } 1;