Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
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";
}
Comment on (code) Array Play
Download Code

Back to Snippets Section

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://76539]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (7)
As of 2014-11-29 07:54 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (204 votes), past polls