aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2019-10-07 13:32:52 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2019-10-07 13:32:52 +0100
commit08130b20934d14f6e8ab22fe0801db438bac3fb7 (patch)
tree70d3bbd6bb8d9dbad32e422d384f1bcf95a7353b
parentca8c5f028c6a48e74e179e0dcb2c801a1108cbcf (diff)
parentcc1808858ccd9a09ad2e0f3841c26b64855e3a1d (diff)
downloadperlweeklychallenge-club-08130b20934d14f6e8ab22fe0801db438bac3fb7.tar.gz
perlweeklychallenge-club-08130b20934d14f6e8ab22fe0801db438bac3fb7.tar.bz2
perlweeklychallenge-club-08130b20934d14f6e8ab22fe0801db438bac3fb7.zip
Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club
-rwxr-xr-xchallenge-029/roger-bell-west/perl5/ch-1.pl54
-rwxr-xr-xchallenge-029/roger-bell-west/perl5/ch-2.pl14
-rwxr-xr-xchallenge-029/roger-bell-west/perl6/ch-2.p67
3 files changed, 75 insertions, 0 deletions
diff --git a/challenge-029/roger-bell-west/perl5/ch-1.pl b/challenge-029/roger-bell-west/perl5/ch-1.pl
new file mode 100755
index 0000000000..cbc269fc9b
--- /dev/null
+++ b/challenge-029/roger-bell-west/perl5/ch-1.pl
@@ -0,0 +1,54 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+# Write a script to demonstrate brace expansion. For example, script would take command line argument Perl {Daily,Weekly,Monthly,Yearly} Challenge and should expand it and print like below:
+#
+# Perl Daily Challenge
+#
+# Perl Weekly Challenge
+#
+# Perl Monthly Challenge
+
+foreach my $text (@ARGV) {
+ my %r;
+ my @e=split /(\{.*?\})/,$text;
+ foreach my $i (0..$#e) {
+ if ($e[$i] =~ /^\{(.*)\}$/) {
+ my @b=split ',',$1;
+ $r{$i}=$#b;
+ $e[$i]=\@b;
+ }
+ }
+ my %a=map {$_ => 0} keys %r;
+ OUTER:
+ while (1) {
+ my @out;
+ foreach my $k (0..$#e) {
+ if (exists $r{$k}) {
+ push @out,$e[$k][$a{$k}];
+ } else {
+ push @out,$e[$k];
+ }
+ }
+ print join('',@out),"\n";
+ my @kl=sort keys %a;
+ unless (@kl) {
+ last;
+ }
+ my $i=0;
+ while (1) {
+ $a{$kl[$i]}++;
+ if ($a{$kl[$i]} > $r{$kl[$i]}) {
+ $a{$kl[$i]}=0;
+ $i++;
+ if ($i > $#kl) {
+ last OUTER;
+ }
+ } else {
+ last;
+ }
+ }
+ }
+}
diff --git a/challenge-029/roger-bell-west/perl5/ch-2.pl b/challenge-029/roger-bell-west/perl5/ch-2.pl
new file mode 100755
index 0000000000..18fd42b309
--- /dev/null
+++ b/challenge-029/roger-bell-west/perl5/ch-2.pl
@@ -0,0 +1,14 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use FFI::Raw;
+
+my $cpf=FFI::Raw->new('libc.so.6','printf',
+ FFI::Raw::int,
+ FFI::Raw::str,
+ FFI::Raw::str,
+ );
+
+$cpf->call("%s\n",'a string passed from perl5');
diff --git a/challenge-029/roger-bell-west/perl6/ch-2.p6 b/challenge-029/roger-bell-west/perl6/ch-2.p6
new file mode 100755
index 0000000000..122993cff1
--- /dev/null
+++ b/challenge-029/roger-bell-west/perl6/ch-2.p6
@@ -0,0 +1,7 @@
+#! /usr/bin/perl6
+
+use NativeCall;
+
+our sub cpf(Str, Str --> int32) is native(sub{'libc.so.6'}) is symbol('printf') { * }
+
+cpf("%s\n",'a string passed from perl6'); \ No newline at end of file