From bd7299957268fdcda38c666bdeeb9e4a377e36f5 Mon Sep 17 00:00:00 2001 From: Steven Wilson Date: Sun, 4 Sep 2022 13:51:05 +0100 Subject: add solution week 180 task 1 in perl --- challenge-180/steven-wilson/perl/ch-01.pl | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 challenge-180/steven-wilson/perl/ch-01.pl 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 -- cgit