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-allto 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
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.