vipsi - the friendly vip script interpreter

Modes of Operation

There are basically three Modes of Operationmodes of operation: Modes of Operation: Interactive Shellinteractive shell, running a Modes of Operation: Shell Scriptsshell script Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
running a Modes of Operation: CGI Scripts
Example Scripts: CGI Scripts
cgi script
.

Interactive Shell

Flow control: if … thenIf vipsi is launched without any command line Vipsi command syntax: Arguments
Glossary: Arguments
arguments
, it starts in interactive mode. First it prints a greeting Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
how to Instructions: getget help:

[localhost:~] kio% vipsi

vipsi - VIP Example Scripts: CGI Scripts
Example Scripts: Scripts
Script
Interpreter 0.8.3 (c) 2001-2003 kio@little-bat.de   development release. please set your terminal to utf-8 Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
vt100.   see <vipsi.sourceforge.net> for latest documentation.   vipsi is waiting for your commands.   type an Vipsi command syntax: Expressions
Glossary: Expression
expression
to calculate Flow control: if … then
Flow control: try … then
the
result.   type «List functions: words
Shell Immediate Commands: words
words
» for a Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
of List functions: words
Shell Immediate Commands: words
words
.   type «Text functions: info
Shell Immediate Commands: info
info
"foo"» for Text functions: info
Shell Immediate Commands: info
info
on List functions: words
Shell Immediate Commands: words
word
«foo».   use «pd_up» Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
«pd_dn» for Interactive Shell: Historyhistory.   type ctrl-D to Shell Immediate Commands: exit, quit, endquit.  
vipsi>

Flow control: if … then
Flow control: try … then
Then
it Instructions: readreads Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instructions
line by line Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
executes Flow control: if … then
Flow control: try … then
them
in turn.

vipsi> List functions: dir
Instructions: dir
Shell Immediate Commands: dir
dir
""
Host: localhost; User: kio(staff); SysLoad: 0.38,0.35,0.33 Time: 2002-04-24 20:00:28; Booted: 2002-04-24 17:57:33 (2h:2m:55s); volume Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
dir: flagsflags free modified ------------------------------- ---- ---------- ------------------- / drwx 7.688 GB 2002-04-24 18:00:00 /Volumes/HD40 drwx 1.507 GB 2002-04-22 15:29:14 vipsi>

Standard input is bold Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
colored by vipsi Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
error messages are inverted Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
red. You can set List functions: thisthis in a Appendix: Preferences Filespreferences file.

Flow control: if … thenIf an error occurs Flow control: whilewhile executing your command, Flow control: if … then
Flow control: try … then
the
appropriate message is displayed inverted Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
red Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
the
bogus line is offered for input again, with Flow control: if … then
Flow control: try … then
the
cursor positioned to to location where Flow control: if … then
Flow control: try … then
the
parser stalled.

vipsi> Numeric functions: sinsin("apfelkuchen")*22
*****  Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
a Glossary: number, num_valnumber
vipsi> Numeric functions: sinsin("apfelkuchen")*22

Flow control: if … then
Flow control: if … then
If the
Vipsi command syntax: Instructions
Instructions
Glossary: Instruction
instruction
typed in is an Vipsi command syntax: Expressions
Glossary: Expression
expression
which returned a result, List functions: thisthis result is automagically printed for your convenience:

vipsi> 998.00 * 1.18  = 1177.64
vipsi>  

Results are automagically printed only in Modes of Operation: Interactive Shellinteractive shell mode, Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
when running a Example Scripts: CGI Scripts
Example Scripts: Scripts
script
.

Preferences

Interactive Shell: PreferencesPreferences are Instructions: readread from /usr/local/lib/vipsi/shell.prefs Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
, Flow control: if … thenif existent, from Text functions: file
Instructions: file
file
~/.vipsi/shell.prefs. Flow control: if … then
Flow control: try … then
The
Appendix: Preferences Filespreferences file contains a Literals: List literals
Lists and arrays: List literals
list literal
according to Flow control: if … then
Flow control: try … then
the
vip Example Scripts: CGI Scripts
Example Scripts: Scripts
script
language Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
is evaluated similar to Functions with varying return types: eval
Instructions: eval
eval
. Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
Not
much Interactive Shell: Preferencespreferences can be set yet, most useful is setting colors for Constants: stdinstdin, stdout Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Constants: stderrstderr Flow control: if … thenif you have problems with Flow control: if … then
Flow control: try … then
the
default magic.

History

Flow control: if … then
Flow control: try … then
The
Interactive Shell: Historyhistory of typed-in commands is available with <pd_up> Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
<pd_dn>.

Shell Scripts

When vipsi is started with a filename as command line Vipsi command syntax: Arguments
Glossary: Arguments
argument
, Flow control: if … then
Flow control: try … then
then
it loads that Text functions: file
Instructions: file
file
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
executes it.

[localhost:~] kio% vipsi test.vs

List functions: thisThis runs Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
test.vs.

Flow control: if … thenIf all is set up properly, a Example Scripts: CGI Scripts
Example Scripts: Scripts
script
can also be started like a program:

[localhost:~] kio% ./test.vs

List functions: thisThis Instructions: requirerequires that vipsi is installed Operators: Make Identifier "@"at Flow control: if … then
Flow control: try … then
the
recommended position in /usr/bin/ Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
that a Text functions: link
Instructions: link
link
is placed there, Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
that Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
Text functions: file
Instructions: file
file
starts with Flow control: if … then
Flow control: try … then
the
line #!/usr/local/bin/vipsi telling Flow control: if … then
Flow control: try … then
the
system which interpreter to start Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
that Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
Text functions: file
Instructions: file
file
is tagged as executable with chmod a+x test.vs Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
that Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
is in Flow control: if … then
Flow control: try … then
the
system's command search path Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
that you type in Flow control: if … then
Flow control: try … then
the
full path to Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
.

You may pass Vipsi command syntax: Arguments
Glossary: Arguments
arguments
to a Example Scripts: CGI Scripts
Example Scripts: Scripts
script
:

[localhost:~] kio% vipsi test.vs anton bärbel cicero

Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or

[localhost:~] kio% ./test.vs anton bärbel cicero

These command line Vipsi command syntax: Arguments
Glossary: Arguments
arguments
are stored into List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables. Because Flow control: if … then
Flow control: try … then
the
passed data has no Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
on it's own, these List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables remain unnamed. How Flow control: if … then
Flow control: try … then
the
Data Types: Text
Item selector "[]": Text
Glossary: text, text_val
text
appended to Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
as command line Vipsi command syntax: Arguments
Glossary: Arguments
arguments
is mixed up depends on your shell, but as a first rule of thumb expect that white space separates individual Vipsi command syntax: Arguments
Glossary: Arguments
arguments
.

So Flow control: if … then
Flow control: try … then
the
examples above result in 3 Vipsi command syntax: Arguments
Glossary: Arguments
arguments
with Flow control: if … then
Flow control: try … then
the
Glossary: Valuevalue "anton", "bärbel" Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
"cicero".

Flow control: if … then
Flow control: try … then
The
following code snipped from a Example Scripts: CGI Scripts
Example Scripts: Scripts
script
shows how to access Flow control: if … then
Flow control: try … then
them
:

#!/usr/local/bin/vipsi

Syntax Cave-ats: var argc = count globals - 1var argc = count globals - 1;

Instructions: putput Constants: nlnl, "test Example Scripts: CGI Scripts
Example Scripts: Scripts
script
", Constants: nlnl Instructions: putput Constants: nlnl, "you passed ", argc, " Vipsi command syntax: Arguments
Glossary: Arguments
arguments
:", Constants: nlnl Instructions: var
How does VScript::Value() work?: Var*&
var
i = 0 Flow control: do … loopdo Flow control: whilewhile ++i <= argc Instructions: putput "arg[", i, "] = ", List functions: globals
Shell Immediate Commands: globals
globals
[i], Constants: nlnl Flow control: do … looploop Flow control: end
Shell Immediate Commands: exit, quit, end
end

It's just that simple: all List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables are stored in a Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
Glossary: Variable, var_refvariable which is called List functions: globals
Shell Immediate Commands: globals
globals
. You can access all List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables which you defined with Instructions: newnew Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
Instructions: var
How does VScript::Value() work?: Var*&
var
either by their Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
by their position in Flow control: if … then
Flow control: try … then
the
List functions: globals
Shell Immediate Commands: globals
globals
Data Types: Lists and arrays
Item selector "[]": Lists
Glossary: list, list_val
list
Glossary: Variable, var_refvariable, whichever suits best. For command line Vipsi command syntax: Arguments
Glossary: Arguments
arguments
it's clearly better to access Flow control: if … then
Flow control: try … then
them
by position, because they are unnamned. B-)

You may ask, why 1 was subtracted when calculating Flow control: if … then
Flow control: try … then
the
Glossary: number, num_valnumber of Vipsi command syntax: Arguments
Glossary: Arguments
arguments
:

Vipsi command syntax: Expressions
Glossary: Expression
Expressions
are always evaluated from left to right. Vipsi command syntax: Functions
Functions
Glossary: Function
Functions
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Vipsi command syntax: Operators
Operators
Glossary: Operator
operators
as soon as their Vipsi command syntax: Arguments
Glossary: Arguments
arguments
are complete. Numeric functions: countcount List functions: globals
Shell Immediate Commands: globals
globals
is executed after Instructions: var
How does VScript::Value() work?: Var*&
var
argc
, Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
therefore Flow control: if … then
Flow control: try … then
the
Glossary: Variable, var_refvariable argc already Numeric functions: existsexists when Numeric functions: countcount Numeric functions: countcounts Flow control: if … then
Flow control: try … then
the
Glossary: number, num_valnumber of List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables. So Flow control: if … then
Flow control: try … then
the
Numeric functions: countcount will Functions with varying return types: include
Instructions: include
include
Glossary: Variable, var_refvariable argc Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
we Operators: Subtract from Variable "-="
Operators: Subtract "-"
subtract
1 for that fact.

Flow control: if … thenIf an error occurs, Flow control: if … then
Flow control: try … then
the
execution of Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
is aborted Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
an error message is printed indicating Flow control: if … then
Flow control: try … then
the
error Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
position in Flow control: if … then
Flow control: try … then
the
Text functions: file
Instructions: file
file
. Flow control: if … then
Flow control: try … then
The
indicated position may be slightly behind Flow control: if … then
Flow control: try … then
the
error. Flow control: if … then
Flow control: if … then
If the
error occured in a Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedure
, Flow control: if … then
Flow control: try … then
the
position in Flow control: if … then
Flow control: try … then
the
Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedure
is indicated (Flow control: if … thenif possible) Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
Flow control: if … then
Flow control: try … then
the
position, where Flow control: if … then
Flow control: try … then
the
Vipsi command syntax: Procedures
Data Types: Procedures
Glossary: Procedure
procedure
was called. Flow control: if … then
Flow control: try … then
The
error message contains a stack trace:

vipsi> Instructions: procproc a(w) { Flow control: if … thenif w a(w-1) Flow control: if … then
Flow control: try … then
else
fsdfsfj Flow control: if … then
Flow control: try … then
then
}
vipsi> a(3) ***** Glossary: Variable, var_refVariable "fsdfsfj" Operators: Bitwise Not "~"
Operators: Boolean Negation "!"
not
found
in: a() in: a() in: a() in: a() vipsi> a(3)
Return values

A Example Scripts: CGI Scripts
Example Scripts: Scripts
script
may optionally Flow control: returnreturn a result Glossary: Valuevalue. Whether it is expected so Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
which Glossary: Valuevalues are acceptable depends on Flow control: if … then
Flow control: try … then
the
Functions with varying return types: call
Instructions: call
caller
.

CGI Scripts

vip Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
may be used to handle cgi requests. In order to be successfully called by Flow control: if … then
Flow control: try … then
the
http server, Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
must be tagged as executable, must reside in a directory where Flow control: if … then
Flow control: try … then
the
http server is willing to execute Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
must of course start with Flow control: if … then
Flow control: try … then
the
interpreter path in line 1:

#!/usr/local/bin/vipsi

Flow control: if … thenIf you decide to Instructions: putput Flow control: if … then
Flow control: try … then
the
vipsi interpreter into another location on your web server, Flow control: if … then
Flow control: try … then
then
your Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
must start with that according path.

Flow control: if … thenIf all that is done, your Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
can be called from your web browser, either directly Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
from a form.

Modes of Operation: CGI Scripts
Example Scripts: CGI Scripts
cgi scripts
are passed Vipsi command syntax: Arguments
Glossary: Arguments
arguments
from Flow control: if … then
Flow control: try … then
the
URL Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
form data either with method Instructions: getGET Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
method POST. both are already handled Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
decoded for you by vipsi when Flow control: if … then
Flow control: try … then
the
Example Scripts: CGI Scripts
Example Scripts: Scripts
script
is started. Data passed to a Modes of Operation: CGI Scripts
Example Scripts: CGI Scripts
cgi script
is typically named. These Vipsi command syntax: Arguments
Glossary: Arguments
arguments
are stored in List functions: globals
Shell Immediate Commands: globals
global
Glossary: Variable, var_refvariables which are named according to those cgi parameter Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
names
.

Flow control: nextNext, Example Scripts: CGI Scripts
Example Scripts: Scripts
scripts
are supposed to send a proper html page (Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
any other proper formatted data) by simply printing to Constants: stdoutstdout. First come two lines of http header (thereof Flow control: if … then
Flow control: try … then
the
second is empty) Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
Flow control: if … then
Flow control: try … then
then
Flow control: if … then
Flow control: try … then
the
html page; Operators: Boolean Or with Variable "||="
Operators: Bitwise Or with Variable "|="
Operators: Bitwise Or "|"
Operators: Boolean Or "||"
or
a gif Text functions: file
Instructions: file
file
, Flow control: if … thenif you decided so.

Flow control: if … then
Flow control: try … then
The
following example shows a simple Modes of Operation: CGI Scripts
Example Scripts: CGI Scripts
cgi script
, which presents it's cgi parameters in a table:

#!/usr/local/bin/vipsi

// http header:
Instructions: putput "content-type: Data Types: Text
Item selector "[]": Text
Glossary: text, text_val
text
/html; charset=utf-8\n\n" // html page, header etc.: Instructions: putput «<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><title>vipsi cgi test Example Scripts: CGI Scripts
Example Scripts: Scripts
script
</title></head> <body style="font-family:sans-serif;"> <h2>passed cgi parameters</h2>» Instructions: var
How does VScript::Value() work?: Var*&
var
argc = Numeric functions: countcount globals-1 Instructions: putput "<table><tr><td><b>Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
</b></td><td><b>Glossary: Valuevalue</b></td></tr>\n" Instructions: var
How does VScript::Value() work?: Var*&
var
i = 0 Flow control: do … loopdo Flow control: whilewhile ++i <= argc Instructions: var
How does VScript::Value() work?: Var*&
var
Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
Name
= Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
name
List functions: globals
Shell Immediate Commands: globals
globals
[i] Text functions: convert
Instructions: convert
convert
Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
Name
to printable Text functions: convert
Instructions: convert
convert
Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
Name
to html Instructions: var
How does VScript::Value() work?: Var*&
var
Glossary: ValueValue = List functions: globals
Shell Immediate Commands: globals
globals
[i] Text functions: convert
Instructions: convert
convert
Glossary: ValueValue to quoted Text functions: convert
Instructions: convert
convert
Glossary: ValueValue to html Instructions: putput "<tr><td>", Vipsi command syntax: Identifiers (names)
Identifiers, names
Operators: Make Identifier "@"
Text functions: name
Glossary: Name, Identifier
Name
, "</td><td>", Glossary: ValueValue, "</td></tr>" Flow control: do … looploop Instructions: putput "</table></body></html>\n" Flow control: end
Shell Immediate Commands: exit, quit, end
end

Flow control: if … thenIf your Example Scripts: CGI Scripts
Example Scripts: Scripts
script
contains an error, vipsi Flow control: do … loopdoes it's best to display Flow control: if … then
Flow control: try … then
the
error Operators: Boolean And with Variable "&&="
Operators: Bitwise And with Variable "&="
Operators: Bitwise And "&"
Operators: Boolean And "&&"
and
position in Flow control: if … then
Flow control: try … then
the
Modes of Operation: CGI Scripts
Example Scripts: CGI Scripts
cgi script
in a html Text functions: file
Instructions: file
file
:

screenshot shows a cgi error message in mozilla

Valid HTML   Valid CSS