aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2019-09-09 01:32:50 +0100
committerGitHub <noreply@github.com>2019-09-09 01:32:50 +0100
commita25a89151ed50ef67e9583b92a04f20920c5527a (patch)
tree1cc9e02c9a4976a4f9b605dd94fc1cc703651961
parentdbb07dbf6d0b2767bd3be2f15d4c5ad1a637a1d2 (diff)
parent6c7a23d444d3cfc090246126b8863fe6352fb325 (diff)
downloadperlweeklychallenge-club-a25a89151ed50ef67e9583b92a04f20920c5527a.tar.gz
perlweeklychallenge-club-a25a89151ed50ef67e9583b92a04f20920c5527a.tar.bz2
perlweeklychallenge-club-a25a89151ed50ef67e9583b92a04f20920c5527a.zip
Merge pull request #610 from jaldhar/challenge-024
Challenge 24 by Jaldhar H. Vyas
-rw-r--r--challenge-024/jaldhar-h-vyas/blog.txt1
-rwxr-xr-xchallenge-024/jaldhar-h-vyas/perl5/ch-1.sh1
-rwxr-xr-xchallenge-024/jaldhar-h-vyas/perl5/ch-2.pl34
-rwxr-xr-xchallenge-024/jaldhar-h-vyas/perl6/ch-1.sh1
-rw-r--r--challenge-024/jaldhar-h-vyas/perl6/ch-2.p627
5 files changed, 64 insertions, 0 deletions
diff --git a/challenge-024/jaldhar-h-vyas/blog.txt b/challenge-024/jaldhar-h-vyas/blog.txt
new file mode 100644
index 0000000000..5d7618bc99
--- /dev/null
+++ b/challenge-024/jaldhar-h-vyas/blog.txt
@@ -0,0 +1 @@
+https://www.braincells.com/perl/2019/09/perl_weekly_challenge_week_24.html
diff --git a/challenge-024/jaldhar-h-vyas/perl5/ch-1.sh b/challenge-024/jaldhar-h-vyas/perl5/ch-1.sh
new file mode 100755
index 0000000000..17e28cc422
--- /dev/null
+++ b/challenge-024/jaldhar-h-vyas/perl5/ch-1.sh
@@ -0,0 +1 @@
+perl -V
diff --git a/challenge-024/jaldhar-h-vyas/perl5/ch-2.pl b/challenge-024/jaldhar-h-vyas/perl5/ch-2.pl
new file mode 100755
index 0000000000..3946e4150a
--- /dev/null
+++ b/challenge-024/jaldhar-h-vyas/perl5/ch-2.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use 5.010;
+use English qw/ -no_match_vars /;
+
+sub process {
+ my ($filename, $index) = @_;
+ open my $fh, '<', $filename or die "$OS_ERROR!";
+ my $lineno = 0;
+ while (my $line = <$fh>) {
+ $lineno++;
+ my @words = split /\W+/msx, $line;
+ for my $word (@words) {
+ push @{$index->{$word}}, { document => $filename, line => $lineno };
+ }
+ }
+ close $fh or die "$OS_ERROR\n";
+}
+
+my %index;
+
+for my $file (@ARGV) {
+ process($file, \%index);
+}
+
+
+for my $word (sort keys %index) {
+ say $word;
+ for my $entry (sort { $a->{document} cmp $b->{document} } @{$index{$word}}) {
+ say q{ }, $entry->{document}, ' - ', $entry->{line};
+ }
+ } \ No newline at end of file
diff --git a/challenge-024/jaldhar-h-vyas/perl6/ch-1.sh b/challenge-024/jaldhar-h-vyas/perl6/ch-1.sh
new file mode 100755
index 0000000000..1c1dae18cf
--- /dev/null
+++ b/challenge-024/jaldhar-h-vyas/perl6/ch-1.sh
@@ -0,0 +1 @@
+perl6 -V
diff --git a/challenge-024/jaldhar-h-vyas/perl6/ch-2.p6 b/challenge-024/jaldhar-h-vyas/perl6/ch-2.p6
new file mode 100644
index 0000000000..98b7707e08
--- /dev/null
+++ b/challenge-024/jaldhar-h-vyas/perl6/ch-2.p6
@@ -0,0 +1,27 @@
+#!/usr/bin/perl6
+
+sub process($filename, %index) {
+ my $lineno = 0;
+
+ for $filename.IO.lines -> $line {
+ $lineno++;
+ for $line.words -> $word {
+ %index{$word}.push({ document => $filename, line => $lineno });
+ }
+ }
+}
+
+sub MAIN(*@ARGS) {
+ my %index;
+
+ for @*ARGS -> $filename {
+ process($filename, %index);
+ }
+
+ for %index.keys.sort -> $word {
+ $word.say;
+ for %index{$word}.sort({ %^a{'document'} cmp %^b{'document'} }) -> %entry {
+ say q{ }, %entry{'document'}, ' - ', %entry{'line'};
+ }
+ }
+}