From 28587e9186124e41a46d79c44850373c7c38f2be Mon Sep 17 00:00:00 2001 From: Steven Wilson Date: Sun, 21 Jul 2019 17:34:51 +0100 Subject: add task 2 sol --- challenge-017/steven-wilson/perl5/ch-2.pl | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 challenge-017/steven-wilson/perl5/ch-2.pl 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"; -- cgit