NAME

rpn - optex module for Reverse Polish Notation calculation

SYNOPSIS

optex -Mrpn command ...

DESCRIPTION

rpn is a module for the optex command that detects arguments that look like Reverse Polish Notation (RPN) expressions and replaces them with their calculated results.

By default, all arguments are processed automatically when the module is loaded.

OPTIONS

Options can be set via -Mrpn::config(...) or --option before --.

--all, --no-all

Enable or disable automatic processing of all arguments. Default is enabled. Use --no-all to disable and process only arguments specified by --rpn.

--verbose

Print diagnostic messages.

--rpn expression

Convert a single RPN expression. Use colon (:) instead of comma as the term separator because comma is used as a parameter delimiter in the module call syntax.

optex -Mrpn --no-all -- echo --rpn 3600:5* hello
# outputs: 18000 hello

EXPRESSIONS

An RPN expression requires at least two terms separated by commas (or colons when using --rpn). A single term like RAND will not be converted, but RAND,0+ will produce a random number.

OPERATORS

The following operators are supported (case-insensitive):

Arithmetic

+ (ADD), - (SUB), * (MUL), / (DIV), % (MOD), ++ (INCR), -- (DECR), POW, SQRT

Trigonometric

SIN, COS, TAN

Logarithmic

LOG, EXP

Numeric

ABS, INT

Bitwise/Logical

& (AND), | (OR), ! (NOT), XOR, ~

Comparison

< (LT), <= (LE), =/== (EQ), > (GT), >= (GE), != (NE)

Conditional

IF

Stack

DUP, EXCH, POP

Other

MIN, MAX, TIME, RAND, LRAND

See Math::RPN for detailed descriptions of these operators.

EXAMPLES

Convert 5 hours to seconds (3600 * 5 = 18000):

$ optex -Mrpn echo 3600,5*
18000

Prevent macOS from sleeping for 5 hours:

$ optex -Mrpn caffeinate -d -t 3600,5*

Process multiple expressions:

$ optex -Mrpn echo 1,2+ 10,3*
3 30

Generate a random number:

$ optex -Mrpn echo RAND,0+
0.316809834520431

INSTALLATION

CPANMINUS

cpanm App::optex::rpn

SEE ALSO

App::optex, https://github.com/kaz-utashiro/optex

App::optex::rpn, https://github.com/kaz-utashiro/optex-rpn

Math::RPN

https://qiita.com/kaz-utashiro/items/2df8c7fbd2fcb880cee6

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright 2021-2025 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.