۰۵آذر
palindrome کلمه ایست که از ابتدا و انتها به یک صورت خوانده شود . به عنوان مثال radar و یا nan .
تکه کد زیر کلمات را از ورودی استاندارد می خواند و سپس کلمه های palindrome را در خروجی استاندارد چاپ می کند . با استفاده از سوییچ v- می توانید کلمات غیر palindrome را در خروجی استاندارد چاپ کنید .
نمونه تست برنامه را مشاهده کنید :
تکه کد زیر کلمات را از ورودی استاندارد می خواند و سپس کلمه های palindrome را در خروجی استاندارد چاپ می کند . با استفاده از سوییچ v- می توانید کلمات غیر palindrome را در خروجی استاندارد چاپ کنید .
#!/usr/local/bin/perl
#
# Read from standard input and check for
# palinrome. use -v option to check
# for non-palindrome words.
# Enter one word per line.
#
use strict;
use warnings;
# check for non-palinrome words.`
my $vflag = 0;
my $prog_name = __FILE__;
sub palindrome {
$_ = shift @_;
my @arr = split "", $_;
return 0 if @arr <= 1;
my ($i, $j) = (0, $#arr);
while ($i < $j) {
return 0 if $arr[$i] ne $arr[$j];
$i++;
$j--;
}
return 1;
}
#
# Usage function. Never returns.
#
sub usage {
print STDERR "usage: $prog_name [-h -v]\n",
"-h:show this help\n",
"-v:show non-palindrome words\n",
"Note: -->Read words from standard input<--\n";
exit 1;
}
foreach (@ARGV) {
if ($_ eq "-h") {
usage();
# Unreachable!
}
elsif ($_ eq "-v") {
$vflag = 1;
shift;
}
}
my $result;
while (<STDIN>) {
chomp;
$result = palindrome $_;
if ($vflag) {
print "$_\n" if !$result;
}
else {
print "$_\n" if $result;
}
}
نمونه تست برنامه را مشاهده کنید :
# cat file1
man
too
ooo
radr
baba
nan
dad
# cat file1 | ./pal.pl
ooo
nan
dad
# cat file1 | ./pal.pl -v
man
too
radr
baba
۹۳/۰۹/۰۵