aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2021-05-13 08:30:38 +0100
committerGitHub <noreply@github.com>2021-05-13 08:30:38 +0100
commitd450fc4537e2900f7f9888c63853c3ba5952f221 (patch)
tree10058392dd955b563ba4a8b353e72aa8269aa219
parente3a0bfbe150f42b7f1be28ad681e411a7fce7565 (diff)
parente0502c74dfd41988164c284290e86afca6d8c6ad (diff)
downloadperlweeklychallenge-club-d450fc4537e2900f7f9888c63853c3ba5952f221.tar.gz
perlweeklychallenge-club-d450fc4537e2900f7f9888c63853c3ba5952f221.tar.bz2
perlweeklychallenge-club-d450fc4537e2900f7f9888c63853c3ba5952f221.zip
Merge pull request #4071 from kurkale6ka/ch_112
Solution 1 to challenge 112
-rw-r--r--challenge-112/kurkale6ka/README1
-rw-r--r--challenge-112/kurkale6ka/perl/ch-1.pl21
2 files changed, 22 insertions, 0 deletions
diff --git a/challenge-112/kurkale6ka/README b/challenge-112/kurkale6ka/README
new file mode 100644
index 0000000000..5760886ad3
--- /dev/null
+++ b/challenge-112/kurkale6ka/README
@@ -0,0 +1 @@
+Solution by kurkale6ka
diff --git a/challenge-112/kurkale6ka/perl/ch-1.pl b/challenge-112/kurkale6ka/perl/ch-1.pl
new file mode 100644
index 0000000000..9e5d37f74d
--- /dev/null
+++ b/challenge-112/kurkale6ka/perl/ch-1.pl
@@ -0,0 +1,21 @@
+#! /usr/bin/env perl
+
+# Canonical UNIX path
+#
+# one-liner versions:
+# -E'$_=pop;s#/\.?(?=(/|$))##g;1while s#/([^/]+/)?\Q..##;say$_||"/"'
+# -E'$_=pop;s#/\.?(?=(/|$))##g;{s#/([^/]+/)?\Q..##&&redo}say$_||"/"'
+
+use v5.22;
+use warnings;
+
+$_ = shift;
+
+# squeeze /s + remove final ones and get rid of /./
+s#/\.?(?=(/|$))##gn;
+
+# discard /dir/.. occurrences from path
+1 while s#/([^/]+/)?\Q..##n;
+# { redo if s#/([^/]+/)?\Q..##n }
+
+say $_||'/'