Rocco Caputo > App-PipeFilter-0.005 > App::PipeFilter

Download:
App-PipeFilter-0.005.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 0.005   Source  

NAME ^

App::PipeFilter

VERSION ^

version 0.005

DESCRIPTION ^

App::PipeFilter is a distribution of shell pipeline filters designed to work with structured data like JSON rather than whitespace separated fields.

For example, jcut is a simple version of cut(1) that understands JSON objects rather than whitespace separated fields.

  % head -1 sample.json
  {"network":"freenode","channel":"#perl","nick":"dngor","karma":"120"}

  % jcut -o network -o channel < eg/sample.json | sort | uniq
  {"network":"efnet","channel":"#perl"}
  {"network":"efnet","channel":"#poe"}
  {"network":"efnet","channel":"#reflex"}
  {"network":"freenode","channel":"#perl"}
  {"network":"freenode","channel":"#poe"}
  {"network":"freenode","channel":"#reflex"}
  {"network":"magnet","channel":"#perl"}
  {"network":"magnet","channel":"#poe"}
  {"network":"magnet","channel":"#reflex"}

The jsonpath filter supports more complex expressions using JSON::Path's variant of JSONPath.

  curl -s 'http://api.duckduckgo.com/?q=poe&o=json' |
  jsonpath -o '$..Topics.*.FirstURL' -o '$..Topics.*.Text' |
  grep -i perl |
  jmap -i col0 -o url -i col1 -o title |
  json2yaml
  --- 
  title: Perl Object Environment, a library for event driven multitasking for the Perl programming language
  url: http://duckduckgo.com/Perl_Object_Environment

DESIGN GOAL ^

App::PipeFilter utilities generally follow the UNIX convention of printing one record per line of text. This maximizes compatibility with UNIX utilities like sort(1), uniq(1) and grep(1).

PRO TIPS ^

JSON isn't particularly concise, so put grep(1), jcut(1) and other filters that eliminate data as early as possible in pipelines.

SEE ALSO ^

jcat - concatenate and print JSON files

jcut - cut out selected portions of each JSON object in a file

jmap - map input JSON fields to output JSON fields by renaming them

json2yaml - convert files of JSON objects into a stream of YAML objects

jsonpath - use JSON::Path to cut out selected portions of JSON objects

jsort - sort input files of JSON objects on key fields

mysql2json - convert mysql -B output to JSON object streams

http://json.org/

http://search.cpan.org/perldoc?JSON::Path

http://goessner.net/articles/JsonPath/

BUGS ^

https://rt.cpan.org/Public/Dist/Display.html?Name=App-PipeFilter

REPOSITORY ^

https://github.com/rcaputo/app-pipefilter

COPYRIGHT and LICENSE ^

App::PipeFilter is Copyright 2011 by Rocco Caputo. All rights are reserved. App::PipeFilter is released under the same terms as Perl itself.

syntax highlighting: