#!/usr/bin/perl # Learning RPerl, Chapter 4, Exercise 5 # Subroutine & driver to greet multiple users # [[[ 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 # [[[ SUBROUTINES ]]] sub greet { { my string_arrayref $RETURN_TYPE }; ( my string $name, my string_arrayref $previous_names ) = @ARG; print 'Hi ', $name, '! '; if ((scalar @{$previous_names}) == 0) { print 'You are the first one here!', "\n"; } else { print q{I've seen: }, (join q{ }, @{$previous_names}), "\n"; } push @{$previous_names}, $name; return $previous_names; } # [[[ OPERATIONS ]]] my string_arrayref $previous_names = []; $previous_names = greet('Fred', $previous_names); $previous_names = greet('Barney', $previous_names); $previous_names = greet('Wilma', $previous_names); $previous_names = greet('Betty', $previous_names);