diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-07 13:32:52 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2019-10-07 13:32:52 +0100 |
| commit | 08130b20934d14f6e8ab22fe0801db438bac3fb7 (patch) | |
| tree | 70d3bbd6bb8d9dbad32e422d384f1bcf95a7353b | |
| parent | ca8c5f028c6a48e74e179e0dcb2c801a1108cbcf (diff) | |
| parent | cc1808858ccd9a09ad2e0f3841c26b64855e3a1d (diff) | |
| download | perlweeklychallenge-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-x | challenge-029/roger-bell-west/perl5/ch-1.pl | 54 | ||||
| -rwxr-xr-x | challenge-029/roger-bell-west/perl5/ch-2.pl | 14 | ||||
| -rwxr-xr-x | challenge-029/roger-bell-west/perl6/ch-2.p6 | 7 |
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 |
