#!/usr/bin/perl

# Learning RPerl, Section 3.12.1: The Range for Loop

# [[[ PREPROCESSOR ]]]
# <<< COMPILE_ERROR: 'ERROR ECOGEASCP12' >>>
# <<< COMPILE_ERROR: 'variable i already declared in this scope, namespace main::, subroutine/method main(), dying' >>>

# [[[ 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

# [[[ OPERATIONS ]]]
for my integer $i ( 0 .. 10 ) {
    # do stuff inside first loop, using $i; fine
    print 'in first loop, have $i = ', $i, "\n";
}

# do stuff outside loops, using $i; causes error in second loop below
my integer $i = 100;
print 'between loops, have $i = ', $i, "\n";

# error
for my integer $i ( 20 .. 30 ) {
    # do stuff inside second loop,
    # using totally independent instance of $i
    print 'in second loop, have $i = ', $i, "\n";
}

print 'after loops, have $i = ', $i, "\n";