NAME
App::Spec::Tutorial - How to write an app with App::Spec::Run
LINKS
- Options and parameters
-
See App::Spec::Argument for documentation and examples on how to define options and parameters.
GENERATOR
You can generate a boilerplate with appspec:
appspec new --class App::Birthdays --name birthdays.pl
For documentation, look at appspec and App::AppSpec.
EXAMPLES
A minimal app called birthdays.pl
The smallest example would be the following app. It doesn't use subcommands.
- birthdays.pl
-
use strict; use warnings; package App::Birthdays; use base 'App::Spec::Run::Cmd'; sub execute { my ($self, $run) = @_; my $date = $run->options->{date}; my $output = <<"EOM"; Birthdays $date: EOM $output .= "Larry Wall"; if ($run->options->{age}) { $output .= " (Age: unknown)"; } $output .= "\n"; $run->out($output); } package main; use App::Spec; App::Spec->read("$Bin/birthdays.yaml")->runner->run;
- birthdays.yaml
-
Short version:
name: birthdays.pl title: Show birthdays appspec: { version: '0.001' } class: App::Birthdays options: - date=s =today --Date - age --Show age
Long version:
name: birthdays.pl title: Show birthdays appspec: { version: '0.001' } class: App::Birthdays options: - name: date type: string default: today summary: Date - name: age type: flag summary: Show age