#!/usr/bin/perl # Learning RPerl, Section 4.5: Subroutine Variables, Variable Scope & Persistence # [[[ PREPROCESSOR ]]] # <<< EXECUTE_SUCCESS: 'inside quux(), have $local_intermittent = 23' >>> # <<< EXECUTE_SUCCESS: 'inside quux(), have $local_intermittent = 23' >>> # [[[ HEADER ]]] use RPerl; use strict; use warnings; our $VERSION = 0.001_000; # [[[ CRITICS ]]] ## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls) # USER DEFAULT 1: allow numeric values & print operator ## no critic qw(RequireInterpolationOfMetachars) # USER DEFAULT 2: allow single-quoted control characters & sigils # [[[ SUBROUTINES ]]] #print 'before defining quux(), have $local_intermittent = ', $local_intermittent, "\n"; # YES ERROR # NEED UPGRADE, CORRELATION #rp035: allow multi-line subroutines & other code blocks, where they would be less than 160 chars if on a single line #sub quux { # { my void $RETURN_TYPE }; # my integer $local_intermittent = 23; # print 'inside quux(), have $local_intermittent = ', $local_intermittent, "\n"; # NO ERROR # $local_intermittent++; # return; #} sub quux { { my void $RETURN_TYPE }; my integer $local_intermittent = 23; print 'inside quux(), have $local_intermittent = ', $local_intermittent, "\n"; $local_intermittent++; return; } #print 'after defining quux(), have $local_intermittent = ', $local_intermittent, "\n"; # YES ERROR # [[[ OPERATIONS ]]] quux(); #print 'after calling quux(), have $local_intermittent = ', $local_intermittent, "\n"; # YES ERROR quux(); #print 'after calling quux(), have $local_intermittent = ', $local_intermittent, "\n"; # YES ERROR