From 44fa7a0afffff7d028e0dc7523044ce9f40647fe Mon Sep 17 00:00:00 2001 From: wanderdoc Date: Fri, 3 Oct 2025 12:24:12 +0200 Subject: Create ch-2.pl --- challenge-341/wanderdoc/perl/ch-2.pl | 55 ++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 challenge-341/wanderdoc/perl/ch-2.pl diff --git a/challenge-341/wanderdoc/perl/ch-2.pl b/challenge-341/wanderdoc/perl/ch-2.pl new file mode 100644 index 0000000000..245dfb5c22 --- /dev/null +++ b/challenge-341/wanderdoc/perl/ch-2.pl @@ -0,0 +1,55 @@ +#!perl +use strict; +use warnings FATAL => qw(all); + +=prompt +You are given a string, $str and a character in the given string, $char. +Write a script to reverse the prefix upto the first occurrence of the given $char in the given string $str and return the new string. + +Example 1 + +Input: $str = "programming", $char = "g" +Output: "gorpramming" + +Reverse of prefix "prog" is "gorp". + +Example 2 + +Input: $str = "hello", $char = "h" +Output: "hello" + +Example 3 + +Input: $str = "abcdefghij", $char = "h" +Output: "hgfedcbaij" + +Example 4 + +Input: $str = "reverse", $char = "s" +Output: "srevere" + +Example 5 + +Input: $str = "perl", $char = "r" +Output: "repl" + +=cut + + + + +use Test2::V0 -no_srand => 1; + +is(reverse_prefix("programming", "g"), "gorpramming", "Example 1"); +is(reverse_prefix("hello", "h"), "hello", "Example 2"); +is(reverse_prefix("abcdefghij", "h"), "hgfedcbaij", "Example 3"); +is(reverse_prefix("reverse", "s"), "srevere", "Example 4"); +is(reverse_prefix("perl", "r"), "repl", "Example 5"); +done_testing(); + +sub reverse_prefix +{ + my ($str, $char) = @_; + my $idx = index($str, $char, 0); + return reverse(substr($str, 0, $idx + 1)) . substr($str, $idx + 1); +} -- cgit