9 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I want to strip first few characters from each record until a proper datesamp is found.
Request for getNextPage.................06/29/12 07:49:30 VVUKOVIC@67.208.166.131{7A805FEF76A62FCBB23EA78B5380EF95.tomcat1}TP-Processor14 LogExchUsage: ERROR:: isprof=false : exch=NSDQ
output should be... (2 Replies)
Discussion started by: ratheeshjulk
2 Replies
2. Solaris
Hi
I am getting the below error while using strip command.
strip: libelf error.
Request error: no string table
strip: a.out: file not manipulated
Could somebody please let me know what might be the solution??
It is in ksh and solaris 10.
Thanks in advance (4 Replies)
Discussion started by: vali__
4 Replies
3. Shell Programming and Scripting
awk -F"\t" -vOFS="\t" '{print $1"\t-\t-","",$6,$7"\t-"$8"\t-\t-\t"$15}' file.tsv > output.tsv
Using the above command how to remove the string www.abc.com from the $7 value. (7 Replies)
Discussion started by: sandy1028
7 Replies
4. Shell Programming and Scripting
I have a list of servers that I need my script to ping however this list also has the env they belong too such as SIT, PRD, warehouse and so on.
The break character for each section is :
A value in my list would look like this...
brutus.grhq.xxx.com:warehouse
Where brutus.grhq.gfs.com is... (13 Replies)
Discussion started by: LRoberts
13 Replies
5. Programming
I am new in Unix. I go through the man strip. But did not understand that, why when we have -G (debug and release ) option in the compiler, than using strip command to strip the debug information from the objects. i want to binary for teh production i will compile it without debug option. What the... (4 Replies)
Discussion started by: Saurabh78
4 Replies
6. UNIX for Advanced & Expert Users
I have created one binary with the debug option debug.out and another without it is production.out. Now, i use stripe on the debug.out.
Now, both binary will be same? or have any differences. (1 Reply)
Discussion started by: Saurabh78
1 Replies
7. Shell Programming and Scripting
Hey guys..
Can experts help me in achieving my purpose..
I have a file which contains email address of some 100 to 1000 domains, I need only the domain names..
Eg: abc@yahoo.com
hd@gamil.com
ed@hotmail.com
The output should contain only
Yahoo.com
... (5 Replies)
Discussion started by: achararun
5 Replies
8. Shell Programming and Scripting
I have a file that looks like this:
/home/fred/opt/bin
/opt/usr/bin
/usr/sbin/var/opt
I need a way to chop of everything after the last occurance of the / sign including the /. So the file above will now look like this below.
/home/fred/opt
/opt/usr
/usr/sbin/var
I tried using... (6 Replies)
Discussion started by: x96riley3
6 Replies
9. Shell Programming and Scripting
Hi,
Can someone let me know how do I strip out any non-alphanumeric character in string tomake it alphanumeric?
i.e
abc def ghi ->abcdefghi
abc-def-ghi ->abcdefghi
abc#def-ghi->abcdefghi
Thanks in advance (3 Replies)
Discussion started by: braindrain
3 Replies
Plack::Middleware(3pm) User Contributed Perl Documentation Plack::Middleware(3pm)
NAME
Plack::Middleware - Base class for easy-to-use PSGI middleware
SYNOPSIS
package Plack::Middleware::Foo;
use parent qw( Plack::Middleware );
sub call {
my($self, $env) = @_;
# Do something with $env
# $self->app is the original app
my $res = $self->app->($env);
# Do something with $res
return $res;
}
# then in app.psgi
use Plack::Builder;
my $app = sub { ... } # as usual
builder {
enable "Plack::Middleware::Foo";
enable "Plack::Middleware::Bar", %options;
$app;
};
DESCRIPTION
Plack::Middleware is a utility base class to write PSGI middleware. All you have to do is to inherit from Plack::Middleware and then
implement the callback "call" method (or "to_app" method that would return the PSGI code reference) to do the actual work. You can use
"$self->app" to call the original (wrapped) application.
Your middleware object is created at a PSGI application compile time and is persistent during the web server life cycle (unless it is a
non-persistent environment such as CGI), so you should never set or cache per-request data like $env in your middleware object. See also
"OBJECT LIFECYCLE" in Plack::Component.
See Plack::Builder how to actually enable middleware in your .psgi application file using the DSL. If you do not like our builder DSL, you
can also use "wrap" method to wrap your application with a middleware:
use Plack::Middleware::Foo;
my $app = sub { ... };
$app = Plack::Middleware::Foo->wrap($app, %options);
$app = Plack::Middleware::Bar->wrap($app, %options);
RESPONSE CALLBACK
The typical middleware is written like this:
package Plack::Middleware::Something;
use parent qw(Plack::Middleware);
sub call {
my($self, $env) = @_;
# pre-processing $env
my $res = $self->app->($env);
# post-processing $res
return $res;
}
The tricky thing about post processing the response is that it could either be an immediate 3 element array ref, or a code reference that
implements the delayed (streaming) interface.
Dealing with these two types of response in each piece of middleware is pointless, so you're recommended to use the "response_cb" wrapper
function in Plack::Util when implementing a post processing middleware.
my $res = $app->($env);
Plack::Util::response_cb($res, sub {
my $res = shift;
# do something with $res;
});
The callback function gets a PSGI response as a 3 element array reference, and you can update the reference to implement the post
processing.
package Plack::Middleware::Always500;
use parent qw(Plack::Middleware);
use Plack::Util;
sub call {
my($self, $env) = @_;
my $res = $self->app->($env);
Plack::Util::response_cb($res, sub {
my $res = shift;
$res->[0] = 500;
return;
});
}
In this example, the callback gets the $res and updates its first element (status code) to 500. Using "response_cb" makes sure that this
works with the delayed response too.
You're not required (and not recommended either) to return a new array reference - they will be simply ignored. You're suggested to
explicitly return, unless you fiddle with the content filter callback (see below).
Similarly, note that you have to keep the $res reference when you swap the entire response.
Plack::Util::response_cb($res, sub {
my $res = shift;
$res = [ $new_status, $new_headers, $new_body ]; # THIS DOES NOT WORK
return;
});
This does not work, since assigning a new anonymous array to $res doesn't update the original PSGI response value. You should instead do:
Plack::Util::response_cb($res, sub {
my $res = shift;
@$res = ($new_status, $new_headers, $new_body); # THIS WORKS
return;
});
The third element of PSGI response array ref is a body, and it could be either array ref or IO::Handle-ish object. The application could
also make use of $writer object if "psgi.streaming" is in effect. Dealing with these variants is again really painful, and "response_cb"
can take care of that too, by allowing you to return a content filter as a code reference.
# replace all "Foo" in content body with "Bar"
Plack::Util::response_cb($res, sub {
my $res = shift;
return sub {
my $chunk = shift;
return unless defined $chunk;
$chunk =~ s/Foo/Bar/g;
return $chunk;
}
});
The callback takes one argument $chunk and your callback is expected to return the updated chunk. If the given $chunk is undef, it means
the stream has reached the end, so your callback should also return undef, or return the final chunk and return undef when called next
time.
SEE ALSO
Plack Plack::Builder Plack::Component
perl v5.14.2 2011-06-22 Plack::Middleware(3pm)