aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteven Wilson <steven1170@zoho.eu>2019-07-21 17:34:51 +0100
committerSteven Wilson <steven1170@zoho.eu>2019-07-21 17:34:51 +0100
commit28587e9186124e41a46d79c44850373c7c38f2be (patch)
treed60f55c63e940e806841f541677cb54d7d023170
parentff29be3b5fa5ce84e6f98e9e3806b14a70f79d92 (diff)
downloadperlweeklychallenge-club-28587e9186124e41a46d79c44850373c7c38f2be.tar.gz
perlweeklychallenge-club-28587e9186124e41a46d79c44850373c7c38f2be.tar.bz2
perlweeklychallenge-club-28587e9186124e41a46d79c44850373c7c38f2be.zip
add task 2 sol
-rw-r--r--challenge-017/steven-wilson/perl5/ch-2.pl35
1 files changed, 35 insertions, 0 deletions
diff --git a/challenge-017/steven-wilson/perl5/ch-2.pl b/challenge-017/steven-wilson/perl5/ch-2.pl
new file mode 100644
index 0000000000..27167654ce
--- /dev/null
+++ b/challenge-017/steven-wilson/perl5/ch-2.pl
@@ -0,0 +1,35 @@
+#!/usr/bin/env perl
+# Create a script to parse URL and print the components of URL.
+# https://en.wikipedia.org/wiki/URL
+# According to Wiki page, the URL syntax is as below:
+# scheme:[//[userinfo@]host[:port]]path[?query][#fragment]
+# For example: jdbc:mysql://user:password@localhost:3306/pwc?profile=true#h1
+# scheme: jdbc:mysql
+# userinfo: user:password
+# host: localhost
+# port: 3306
+# path: /pwc
+# query: profile=true
+# fragment: h1
+#
+# usage: $ perl ch-2.pl "jdbc:mysql://user:password@localhost:3306/pwc?profile=true#h1"
+
+use strict;
+use warnings;
+use feature qw/ say /;
+
+# I tried to write something which would work with optional components but it
+# is beyond me at the moment. This is my first attempt which works with a
+# url containing all the components i.e. the example.
+
+my $url = $ARGV[0];
+
+$url =~ /^(.+):\/\/(.+)@(.+):(\d+)(\/.+)[?](.+)#(.+)/;
+
+say "scheme: $1";
+say "userinfo: $2";
+say "host: $3";
+say "port: $4";
+say "path: $5";
+say "query: $6";
+say "fragment: $7";