6 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi,
I need to call an API (GetUsageDetails)from inside a shell script which takes an input argument acct_nbr.
The output of API will be like :
<usageAccum accumId="450" accumCaptn="PM_125" inclUnits="1410.00" inclUnitsUsed="744.00" shared="true" pooled="false" prorated="false"... (1 Reply)
Discussion started by: rkrish
1 Replies
2. IP Networking
Hello I am having some issues doing to routing I have 4 network cards and one is connected to a linksys router with everything turned off to give us a static ip to use for the gateway out to the internet.
Hear is what we have
We have
eth2 with ip address of 192.168.1.2 / sub 255.255.255.0... (0 Replies)
Discussion started by: psutliff-una
0 Replies
3. IP Networking
My router has UPnP,how to make it work with ubuntu to automatically open ports
I try to open the following command " /sbin/iptables -I INPUT -d 0/0 -s 0/0 -p tcp --dport 21 -j ACCEPT" ,local only opens ,if i put the ip 192.168.1.68, it works correctly, if i`m put my external ip does not work,I... (9 Replies)
Discussion started by: dhalus
9 Replies
4. UNIX for Dummies Questions & Answers
I set up remote printing on a clients Unix server to my Windows XP USB printer. My USB printer is connected directly to my PC (no print server and no network input on printer). With my Win XP PC connected to my cable modem (without the router), i can do
lp -dhp842c /etc/hosts and it prints. I... (7 Replies)
Discussion started by: jmhohne
7 Replies
5. UNIX for Advanced & Expert Users
Hello everyone,
I' m currently working on an open source project and I'm looking for people willing to test the software on various platforms so that we'll be able to publish a compatibility list.
The project is called CorneliOS, it's a webOS and web application framework, and it has been... (0 Replies)
Discussion started by: joskirps
0 Replies
6. UNIX for Advanced & Expert Users
Howdy all,
I've used various applications in the past that ran in unix and windoze and unfortunately several of those programs are migrating to a windoze only environment so management is bagging the proprietary unix boxes in the process. AArrgggghh So here's my question for all you serious... (3 Replies)
Discussion started by: bulletbob
3 Replies
Router::Simple(3pm) User Contributed Perl Documentation Router::Simple(3pm)
NAME
Router::Simple - simple HTTP router
SYNOPSIS
use Router::Simple;
my $router = Router::Simple->new();
$router->connect('/', {controller => 'Root', action => 'show'});
$router->connect('/blog/{year}/{month}', {controller => 'Blog', action => 'monthly'});
my $app = sub {
my $env = shift;
if (my $p = $router->match($env)) {
# $p = { controller => 'Blog', action => 'monthly', ... }
} else {
[404, [], ['not found']];
}
};
DESCRIPTION
Router::Simple is a simple router class.
Its main purpose is to serve as a dispatcher for web applications.
Router::Simple can match against PSGI $env directly, which means it's easy to use with PSGI supporting web frameworks.
HOW TO WRITE A ROUTING RULE
plain string
$router->connect( '/foo', { controller => 'Root', action => 'foo' } );
:name notation
$router->connect( '/wiki/:page', { controller => 'WikiPage', action => 'show' } );
...
$router->match('/wiki/john');
# => {controller => 'WikiPage', action => 'show', page => 'john' }
':name' notation matches qr{([^/]+)}.
'*' notation
$router->connect( '/download/*.*', { controller => 'Download', action => 'file' } );
...
$router->match('/download/path/to/file.xml');
# => {controller => 'Download', action => 'file', splat => ['path/to/file', 'xml'] }
'*' notation matches qr{(.+)}. You will get the captured argument as an array ref for the special key "splat".
'{year}' notation
$router->connect( '/blog/{year}', { controller => 'Blog', action => 'yearly' } );
...
$router->match('/blog/2010');
# => {controller => 'Blog', action => 'yearly', year => 2010 }
'{year}' notation matches qr{([^/]+)}, and it will be captured.
'{year:[0-9]+}' notation
$router->connect( '/blog/{year:[0-9]+}/{month:[0-9]{2}}', { controller => 'Blog', action => 'monthly' } );
...
$router->match('/blog/2010/04');
# => {controller => 'Blog', action => 'monthly', year => 2010, month => '04' }
You can specify regular expressions in named captures.
regexp
$router->connect( qr{/blog/(d+)/([0-9]{2})', { controller => 'Blog', action => 'monthly' } );
...
$router->match('/blog/2010/04');
# => {controller => 'Blog', action => 'monthly', splat => [2010, '04'] }
You can use Perl5's powerful regexp directly, and the captured values are stored in the special key "splat".
METHODS
my $router = Router::Simple->new();
Creates a new instance of Router::Simple.
$router->connect([$name, ] $pattern, \%destination[, \%options])
Adds a new rule to $router.
$router->connect( '/', { controller => 'Root', action => 'index' } );
$router->connect( 'show_entry', '/blog/:id',
{ controller => 'Blog', action => 'show' } );
$router->connect( '/blog/:id', { controller => 'Blog', action => 'show' } );
$router->connect( '/comment', { controller => 'Comment', action => 'new_comment' }, {method => 'POST'} );
"\%destination" will be used by match method.
You can specify some optional things to "\%options". The current version supports 'method', 'host', and 'on_match'.
method
'method' is an ArrayRef[String] or String that matches REQUEST_METHOD in $req.
host
'host' is a String or Regexp that matches HTTP_HOST in $req.
on_match
$r->connect(
'/{controller}/{action}/{id}',
{},
{
on_match => sub {
my($env, $match) = @_;
$match->{referer} = $env->{HTTP_REFERER};
return 1;
}
}
);
A function that evaluates the request. Its signature must be "($environ, $match) => bool". It should return true if the match is
successful or false otherwise. The first arg is $env which is either a PSGI environment or a request path, depending on what you
pass to "match" method; the second is the routing variables that would be returned if the match succeeds.
The function can modify $env (in case it's a reference) and $match in place to affect which variables are returned. This allows a
wide range of transformations.
$router->submapper($path, [\%dest, [\%opt]])
$router->submapper('/entry/', {controller => 'Entry'})
This method is shorthand for creating new instance of Router::Simple::Submapper.
The arguments will be passed to "Router::Simple::SubMapper->new(%args)".
$match = $router->match($env|$path)
Matches a URL against one of the contained routes.
The parameter is either a PSGI $env or a plain string that represents a path.
This method returns a plain hashref that would look like:
{
controller => 'Blog',
action => 'daily',
year => 2010, month => '03', day => '04',
}
It returns undef if no valid match is found.
my ($match, $route) = $router->routematch($env|$path);
Match a URL against against one of the routes contained.
Will return undef if no valid match is found, otherwise a result hashref and a Router::Simple::Route object is returned.
$router->as_string()
Dumps $router as string.
Example output:
home GET /
blog_monthly GET /blog/{year}/{month}
GET /blog/{year:d{1,4}}/{month:d{2}}/{day:dd}
POST /comment
GET /
AUTHOR
Tokuhiro Matsuno <tokuhirom AAJKLFJEF GMAIL COM>
THANKS TO
Tatsuhiko Miyagawa
Shawn M Moore
routes.py <http://routes.groovie.org/>.
SEE ALSO
Router::Simple is inspired by routes.py <http://routes.groovie.org/>.
Path::Dispatcher is similar, but so complex.
Path::Router is heavy. It depends on Moose.
HTTP::Router has many deps. It is not well documented.
HTTPx::Dispatcher is my old one. It does not provide an OOish interface.
THANKS TO
DeNA
LICENSE
Copyright (C) Tokuhiro Matsuno
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
perl v5.14.2 2011-05-15 Router::Simple(3pm)