package Google::ProtocolBuffers::Dynamic::ProtocPlugin; use strict; use warnings; use Google::ProtocolBuffers::Dynamic::ProtocInterface; sub import { my ($class, %args) = @_; my $generator = $args{run}; eval "require $generator; 1" or die "Error loding plugin '$generator': $@"; binmode STDIN; binmode STDOUT; my $input = do { local $/; readline STDIN; }; my $codegen_request = Google::ProtocolBuffers::Dynamic::ProtocInterface::CodeGeneratorRequest->decode($input); my $codegen_response; eval { my $code = $generator->generate_codegen_request($codegen_request); $codegen_response = Google::ProtocolBuffers::Dynamic::ProtocInterface::CodeGeneratorResponse->encode($code); 1; } or do { my $error = $@ || "Zombie error"; $codegen_response = Google::ProtocolBuffers::Dynamic::ProtocInterface::CodeGeneratorResponse->encode({ error => $error, }); }; print STDOUT $codegen_response; } 1; __END__ =pod =encoding UTF-8 =head1 NAME Google::ProtocolBuffers::Dynamic::ProtocPlugin =head1 VERSION version 0.41 =head1 AUTHOR Mattia Barbon =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2015-2016 by Mattia Barbon. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. =cut