App::Sp...Argument(3)

πŸ“¦ version 0.15.0, in opensuse-leap 16.0

πŸ’– NAME πŸ’–

Hey bestie! This is the App::Spec::Argument(3) page from the User Contributed Perl Documentation, and it is literally about App::Spec objects representing command line options or parameters. No cap. πŸ’…

✨ SYNOPSIS ✨

(The original leaves this section empty β€” no synopsis lines to copy, bestie. Just vibes.)

🌸 EXAMPLES 🌸

Okay so options can be defined in a verbose way via key value pairs, but you can also use a shorter syntax. Both? Obsessed. 🫢

The idea comes from Ingy's http://www.schematype.org/.

The first item of the string is the name of the option using a syntax very similar to the one from Getopt::Long.

Then you can optionally define a type, a default value and a summary. Cute.

You can see a list of supported syntax in this example from t/data/12.dsl.yaml:

---
# version with short dsl syntax
name: myapp
appspec: { version: 0.001 }
class: App::Spec::Example::MyApp
title: My Very Cool App
options:
  - spec: foo                 --Foo
  - spec: verbose|v+          --be verbose
  - spec: +req                --Some required flag
  - spec: number=i            --integer option
  - spec: number2|n= +integer --integer option
  - spec: fnumber=f           --float option
  - spec: fnumber2|f= +float  --float option
  - spec: date|d=s =today
  - spec: items=s@            --multi option
  - spec: set=s%              --multiple key=value pairs

---
# version with verbose syntax
name: myapp
appspec: { version: 0.001 }
class: App::Spec::Example::MyApp
title: My Very Cool App
options:
  - name: foo
    type: flag
    summary: Foo
  - name: verbose
    summary: be verbose
    type: flag
    multiple: true
    aliases: ["v"]
  - name: req
    summary: Some required flag
    required: true
    type: flag
  - name: number
    summary: integer option
    type: integer
  - name: number2
    summary: integer option
    type: integer
    aliases: ["n"]
  - name: fnumber
    summary: float option
    type: float
  - name: fnumber2
    summary: float option
    type: float
    aliases: ["f"]
  - name: date
    type: string
    default: today
    aliases: ["d"]
  - name: items
    type: string
    multiple: true
    summary: multi option
  - name: set
    type: string
    multiple: true
    mapping: true
    summary: multiple key=value pairs

πŸ’… METHODS πŸ’…

πŸŽ€ common πŸŽ€

Builds a hash with the given hashref and fills in some defaults. Slay. ✨

my %hash = $class->common($args);

πŸ¦‹ from_dsl πŸ¦‹

Builds a hash from the dsl string. Periodt. πŸ’œ

%dsl = $class->from_dsl("verbose|v+ --Be verbose");

🌈 name, type, multiple, required, unique, summary, description, default, completion, enum, values, mapping 🌈

Attributes which represent the ones from the spec. πŸ’–


That's the whole page, bestie! 🫢 This one is from perl v5.42.0 and dated 2025-03-26. Go slay those argument specs βœ¨πŸ’…

πŸ“¦ where this page comes from