diff options
| author | Roger Bell_West <roger@firedrake.org> | 2019-10-07 12:55:26 +0100 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2019-10-07 12:55:26 +0100 |
| commit | 12a55cf6e1f0b0913900da90bed9ec2c8d2364ca (patch) | |
| tree | da187287474cbad81f4d577daa110ac98fc04f60 | |
| parent | 9aa4d1bb2fefaeafe9d017ccb651facd70a77940 (diff) | |
| download | perlweeklychallenge-club-12a55cf6e1f0b0913900da90bed9ec2c8d2364ca.tar.gz perlweeklychallenge-club-12a55cf6e1f0b0913900da90bed9ec2c8d2364ca.tar.bz2 perlweeklychallenge-club-12a55cf6e1f0b0913900da90bed9ec2c8d2364ca.zip | |
Answers for challenge 29.
| -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 |
