diff options
| -rw-r--r-- | challenge-180/steven-wilson/perl/ch-01.pl | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-180/steven-wilson/perl/ch-01.pl b/challenge-180/steven-wilson/perl/ch-01.pl new file mode 100644 index 0000000000..60bf86968e --- /dev/null +++ b/challenge-180/steven-wilson/perl/ch-01.pl @@ -0,0 +1,33 @@ +#!/usr/bin/env perl +# Week 180 Task 1 +# Write a script to find out the first unique character in the given string +# and print its index (0-based). + +use strict; +use warnings; +use Test::More; + +ok(first_unique_character("Perl Weekly Challenge") == 0, "First"); +ok(first_unique_character("Long Live Perl") == 1, "Second"); +ok(first_unique_character("LOLOLx") == 5, "Last"); +ok(!defined(first_unique_character("LOLO")), "None"); +done_testing(); + +sub first_unique_character { + my $s = shift; + my $len = length $s; + my $index = 0; + while ( $index < $len) { + my $c = substr $s, $index, 1; + my $number = () = $s =~ /$c/gi; + if ( $number == 1){ + last; + } + $index++; + if ($index == $len) { + undef $index; + last; + } + } + return $index; +}
\ No newline at end of file |
