POE::Filter::Map man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

POE::Filter::Map(3)   User Contributed Perl Documentation  POE::Filter::Map(3)

NAME
       POE::Filter::Map - transform input and/or output within a filter stack

SYNOPSIS
	 #!perl

	 use POE qw(
	   Wheel::FollowTail
	   Filter::Line Filter::Map Filter::Stackable
	 );

	 POE::Session->create(
	   inline_states => {
	     _start => sub {
	       my $parse_input_as_lines = POE::Filter::Line->new();

	       my $redact_some_lines = POE::Filter::Map->new(
		 Code => sub {
		   my $input = shift;
		   $input = "[REDACTED]" unless $input =~ /sudo\[\d+\]/i;
		   return $input;
		 },
	       );

	       my $filter_stack = POE::Filter::Stackable->new(
		 Filters => [
		   $parse_input_as_lines, # first on get, last on put
		   $redact_some_lines, # first on put, last on get
		 ]
	       );

	       $_[HEAP]{tailor} = POE::Wheel::FollowTail->new(
		 Filename => "/var/log/system.log",
		 InputEvent => "got_log_line",
		 Filter => $filter_stack,
	       );
	     },
	     got_log_line => sub {
	       print "Log: $_[ARG0]\n";
	     }
	   }
	 );

	 POE::Kernel->run();
	 exit;

DESCRIPTION
       POE::Filter::Map transforms data inside the filter stack.  It may be
       used to transform input, output, or both depending on how it is
       constructed.  This filter is named and modeled after Perl's built-in
       map() function.

       POE::Filter::Map is designed to be combined with other filters through
       POE::Filter::Stackable.	In the "SYNOPSIS" example, a filter stack is
       created to parse logs as lines and redact all entries that don't
       pertain to a sudo process.

PUBLIC FILTER METHODS
       In addition to the usual POE::Filter methods, POE::Filter::Map also
       supports the following.

   new
       new() constructs a new POE::Filter::Map object.	It must either be
       called with a single Code parameter, or both a Put and a Get parameter.
       The values for Code, Put and Get are code references that, when
       invoked, return transformed versions of their sole parameters.  A Code
       function will be used for both input and output, while Get and Put
       functions allow input and output to be filtered in different ways.

	 # Decrypt rot13.
	 sub decrypt_rot13 {
	   my $encrypted = shift;
	   $encrypted =~ tr[a-zA-Z][n-za-mN-ZA-M];
	   return $encrypted;
	 }

	 # Encrypt rot13.
	 sub encrypt_rot13 {
	   my $plaintext = shift;
	   $plaintext =~ tr[a-zA-Z][n-za-mN-ZA-M];
	   return $plaintext;
	 }

	 # Decrypt rot13 on input, and encrypt it on output.
	 my $rot13_transcrypter = POE::Filter::Map->new(
	   Get => \&decrypt_rot13,
	   Put => \&encrypt_rot13,
	 );

       Rot13 is symmetric, so the above example can be simplified to use a
       single Code function.

	 my $rot13_transcrypter = POE::Filter::Map->new(
	   Code => sub {
	     local $_ = shift;
	     tr[a-zA-Z][n-za-mN-ZA-M];
	     return $_;
	   }
	 );

   modify
       modify() changes a POE::Filter::Map object's behavior at run-time.  It
       accepts the same parameters as new(), and it replaces the existing
       transforms with new ones.

	 # Switch to "reverse" encryption for testing.
	 $rot13_transcrypter->modify(
	   Code => sub { return scalar reverse shift }
	 );

SEE ALSO
       POE::Filter for more information about filters in general.

       POE::Filter::Stackable for more details on stacking filters.

BUGS
       None known.

AUTHORS & COPYRIGHTS
       The Map filter was contributed by Dieter Pearcey.  Documentation is
       provided by Rocco Caputo.

       Please see the POE manpage for more information about authors and
       contributors.

perl v5.14.2			  2011-12-15		   POE::Filter::Map(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net