Amazon Interview Question
Software Engineer / DevelopersHi Killer. You were right. Here is my example and output
#! /usr/bin/perl
print "Enter a 9 digit number: ";
$number = <>;
chomp $number;
if ($number =~ /\d{9}/) {
print "$number is a 9 digit number\n";
}
else {
print "$number is not a 9 digit number\n";
}
Output & Test Case
-------------------
bash-2.05$ perl match.pl
Enter a 9 digit number: 234567890
234567890 is a 9 digit number
bash-2.05$ perl match.pl
Enter a 9 digit number: 12345
12345 is not a 9 digit number
bash-2.05$ perl match.pl
Enter a 9 digit number: a1234
a1234 is not a 9 digit number
bash-2.05$ perl match.pl
Enter a 9 digit number: a12345678
a12345678 is not a 9 digit number
But this wouldn't give numbers having exactly 9 digits i guess? it would give numbers/strings having 9digits or more.
For e.g 989842342342342897 would also be eligible, and it's not a 9 digit nubmer.
The correct code would be i guess, [^0-9][0-9]\{9\}[^0-9] if you were looking for exactly some nine digit number.
All the above solutions wont give exactly 9 digits. Try this. /^\d{9}$/
Complete Code:
#! /usr/bin/perl
print "Enter a 9 digit number: ";
$number = <>;
chomp $number;
if ($number=~ /^\d{9}$/) {
print "$number is a 9 digit number\n";
}
else {
print "$number is not a 9 digit number\n";
}
Your answer seems incorrect, it checks for only 1 digit from 0-9 range. Instead it should be some thing like [1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]. Can suggest a better way to write this expression in perl?
- Killer Drama September 10, 2008