Acme::Glue - A placeholder module for code accompanying a Perl photo project
2023.10
Acme::Glue is the companion Perl module for a Perl photo project, the idea for the photo project is to have each photo include a small snippet of code. The code does not have to be Perl, it just has to be something you're quite fond of for whatever reason.
"Glue" is a series of photos shot at Perl conferences and workshops in Europe and America. Perl was one of the programming languages that bootstrapped a lot of internet based companies in the mid/late 1990s and early 2000s. Perl was considered a “glue” language by some, but has fallen out of favour as newer languages have taken its place. The title is a metaphor not just for the language but also for shrinking of the community at the events the photos are shot at.
Here are the snippets that may accompany the photo project
#!/usr/bin/env perl # # transform an array of hashes into an array of arrays where each array # contains the values from the hash sorted by the original hash keys or # the passed order of columns (hash slicing) my @ordered = $column_order ? map { [ @$_{ @{ $column_order } } ] } @{ $chaos } : map { [ @$_{sort keys %$_} ] } @{ $chaos };
#!/usr/bin/env perl6 my @court = ( [ 'FIN' ], [ 9 ,10 ], [ 8 ], [ 6 , 7 ], [ 5 ], [ 4 ], [ 2 , 3 ], [ 1 ], ); my $skip = @court.[1..*].pick.pick; my @play; for @court.reverse -> $hop { @play.push( $hop.map( *.subst( /^$skip$/,'🚫' ).list ) ); } say @play.reverse.join( "\n" );
#!/usr/bin/env perl -wl print <<'EOT'; 0 1 2 3 unpack("V",$_) 01234567890123456789012345678901 ------------------------------------------------------------------ EOT for $w (0..3) { $width = 2**$w; for ($shift=0; $shift < $width; ++$shift) { for ($off=0; $off < 32/$width; ++$off) { $str = pack("B*", "0"x32); $bits = (1<<$shift); vec($str, $off, $width) = $bits; $res = unpack("b*",$str); $val = unpack("V", $str); write; } } } format STDOUT = vec($_,@#,@#) = @<< == @######### @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> $off, $width, $bits, $val, $res . __END__
use Boulder::Stream; $stream = new Boulder::Stream; while ($record=$stream->read_record('NAME','SEQUENCE')) { $name = $record->get('NAME'); $sequence = $record->get('SEQUENCE'); ...continue processing... $record->add(QUALITY_CHECK=>"OK|); $stream->write_record($record); }
$_=q(print"\$_=q($_);eval;");eval;
% git branch * blead % find . -name "*.[ch]" | xargs wc -l | sort -nr | head -n5 788279 total 436086 ./charclass_invlists.h 17540 ./sv.c 16254 ./regcomp.c 15712 ./op.c
sub Soundex { local ($_, $f) = shift; y;a-z;A-Z;;y;A-Z;;cd;$_ ne q???do{($f)=m;^(.);;s;$f+;;; y;AEHIOUWYBFPVCGJKQSXZDTLMNR;00000000111122222222334556;; y;;;cs;y;0;;d;s;^;$f;;s;$;0000;;m;(^.{4});;$1;}:q;;; }
GetOptions( 'help|h|?' => sub { pod2usage(1) }, 'serial-dev|d=s' => \my $opt_serial_dev= '/dev/delorean', 'socket|S=s' => \my $opt_socket= '/run/uctl-daemon.sock', ) or pod2usage(2);
10 PRINT CHR$(205.5+RND(1));:GOTO 10
#!/usr/bin/env perl # https://en.wikipedia.org/wiki/Schwartzian_transform # Sort list of words according to word length print "$_\n" foreach map { $_->[0] } sort { $a->[1] <=> $b->[1] or $a->[0] cmp $b->[0] } map { [$_, length($_)] } qw(demo of schwartzian transform);
Thanks to all who contributed a snippet
https://www.formulanon.com/glue
https://www.youtube.com/watch?v=ir6f2SvsXPA&feature=youtu.be&list=PLOOlhkMvt_o4y627mpaCGrO4ughSEeUgb&t=1046
https://leejo.github.io/acme-glue-talk/presentation.html#1
Lee Johnson - leejo@cpan.org
leejo@cpan.org
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. If you would like to contribute documentation, features, bug fixes, or anything else then please raise an issue / pull request:
https://github.com/leejo/acme-glue
All photos © Lee Johnson
To install Acme::Glue, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Acme::Glue
CPAN shell
perl -MCPAN -e shell install Acme::Glue
For more information on module installation, please visit the detailed CPAN module installation guide.