Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

(code) Array Play

by ybiC (Prior)
on Apr 30, 2001 at 07:07 UTC ( #76539=snippet: print w/replies, xml ) Need Help??
Description: A nothing snippet illustrating a few rudimentary array capabilities.   Extra points for recognizing what book I've been re-reviewing {grin}

Updates:
Slightly more idiomatic for(@list) syntax.
Cleaner OS-based break character detection (commented out), with ternary op syntax active.
Remove unecessary srand call.   Thanks tilly, for mentioning that.   8^)
Add Win32 detection for OS-specific prompting.
Move $random before $first and $last so all names included in random selection.   Thanks Albannach, for pointing that out.   8^)

#!/usr/bin/perl -w

# arrayplay.pl
# 2002-03-20   22:10 CST
# 2001-04-30

use strict;


# using ternary op:
my $donechar = $^O =~ /MSWin32/ ? 'CTRL+Z<enter>' : 'CTRL+D';
print "\n  Enter words, follow each with <enter>.\n";
print  "  $donechar after final <enter>.\n\n";

# same thing, but with default val+if:
# my $donechar = 'CTRL+D';
# $donechar    = 'CTRL+Z<enter>' if ($^O eq 'MSWin32');
# print "\n  Enter words, follow each with <enter>.\n";
# print  "  $donechar after final word+<enter>.\n\n";

chomp(my @words = <STDIN>);
print "\n  ", $#words+1, " words entered.\n";


my $random = rand(@words);
my $first  = shift(@words);
my $last   = pop(@words);


unshift(@words, $first);
push(@words, $last);
print
  "    first entry:  $first\n",
  "    last entry:   $last\n",
  "    random entry: $words[$random]\n",
  "\n";


print "  as entered:\n";
PrintList(@words);


print "  reverse order:\n";
my @reversed = reverse(@words);
PrintList(@reversed);


print "  sorted alphabetically:\n";
my @sorted = sort(@words);
PrintList(@sorted);


print "  reverse alphabetic:\n";
my @revalpha = reverse(@sorted);
PrintList(@revalpha);


if ($^O eq 'MSWin32') {
  print "  Hit <enter> to exit.";
  <STDIN>;
  exit;
}


sub PrintList {
  print "    $_\n" for(@_);
  print "\n";
}
Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://76539]
help
Chatterbox?
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (4)
As of 2017-07-27 04:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (403 votes). Check out past polls.