Perlで伝統芸能

 hitode909
Perlで伝統芸能

 hitode909
Perl
Perlの
 印象
伝統芸能
しにくい
伝統芸能
しにくい
思いがち
やれば
 できる
 ことを
示したい
伝統芸能
伝統芸能
カットアップ
カット
アップ
新聞を
無作為に切り刻んで
  くっつけると
   詩になる
Perlを使って
  Perlの
 ソースコード
をカットアップ
初級編   かんたん



中級編   ちょっとまし



上級編   むりやり
初級編
 かんたん
カットアップ初級編

•Perlのソースコードを入力する

• Perlのソースコードを3文字ずつ切る

• 切った文字をつなぎあわせて出力する
usese strict;
     client::UNIX;
use Pod::Util::load_psgi/HellQuote($uri = (
            server->[0], @args) = $conn = +{ };
     [ 'AnyEventations: ", ($handler);
  );
             }
     my $url
use Testings;

exit;

eval "requestings;
use Getopts{help};
  $socket', workers = IO::Server (@back::Loader->load($handler);
usese strict;
use Pod::Util::load_psgi/HellQuote($ur



        違和感
中級編
 ちょっとまし
PPIを使う
Parse,          構文解析してくれる
Analyze          CPANモジュール
and                静的コード解析
Manipulate Perl
(without perl)
カットアップ中級編

•Perlのソースコードを入力する

• PPIでPerlのソースコードを字句解析して
トークンごとに切る

•切ったトークンをつなぎあわせて出力する
use FCGI::Client;
use warnings;
use IO::Socket::UNIX;
use autodie;
use Pod::Usage;
use warnings;

my $module = Plack::Util::load_psgi($opts{app});

my @try = File::Temp::tmpnam();
GetOptions(
  [ 'Starman', ' (workers=10)', workers => 10 ],
  [ 'Starman', ' (workers=10)', max_workers => sub {
  eval { Plack::Loader->load($handler->[0];

my $fname ) = Plack::Loader->load($handler->[0]) };
  kill 9, $pid;
  print "-- server: $server_class ", ($how || ''), "n";
[ 'Starman', ' (workers=10)', workers => 10 ],
[ 'Starman', ' (workers=10)', max_workers => sub {
eval { Plack::Loader->load($handler->[0];




  さっきより自然
[ 'Starman', ' (workers=10)', workers => 10 ],
[ 'Starman', ' (workers=10)', max_workers => sub {
eval { Plack::Loader->load($handler->[0];


  さっきより自然
   実行できない
上級編
 むりやり
カットアップ上級編
•Perlのソースコードを入力する

• PPIでPerlのソースコードを字句解析して
 トークンごとに切る

•Perlのソースコードをつなぎあわせる

• 文法エラーがないとき出力 perl -wc

• いいのが出るまで無限ループ
use strict;
use strict;
use strict;
use HTTP::Message::PSGI;

1;

__END__

=head1 NAME

Plack::Handler::Standalone - adapter for HTTP::Server::PSGI

=head1 SYNOPSIS

 % plackup -s Standalone 
   --host 127.0.0.1 --port 9091 --timeout 120

=head1 DESCRIPTION

Plack::Handler::Standalone is an adapter for default Plack server
implementation L<HTTP::Server::PSGI>. This is just an alias for
L<Plack::Handler::HTTP::Server::PSGI>.

=head1 SEE ALSO

L<Plack::Handler::HTTP::Server::PSGI>

=cut
Perlソースコードを
 カットアップして
   実行できる
Perlソースコードの
   生成に成功
今後の予定
テストからソース
コードを自動生成
Perlで
伝統芸能できる
ありがとう
ございました
補足

•   URL

    •   https://gist.github.com/1290440

•   実行方法

    •   perl cutup_high.pl ~/tmp/Plack/**/**.pm

Perlで伝統芸能