Hi Alex,
I believe GNU APL is keeping a list of files that are read one
after the other.
When you start GNU APL from a script then that script is read
first and the next
file (stdin from the CGI) is read after that. At
least that is the plan.
So if you read from stdin using FILE_IO then you
probably get the next lines in
the script file (which is probably not what you wanted).
I guess what you want in the CGI case is a script that
defines APL functions and variables,
possibly using )COPY. Then, on the last line of the
script, call a function which then
hopefully gets the content of the next file (=stdin from CGI).
This case was never tested, though.
/// Jürgen
Jürgen,
Given this behavior, how is it possible to read from stdin of
the CGI script with FILE_IO for the input on the
first line, because wouldn't you have to )COPY in FILE_IO on
the ⎕LC-1 line?
-------- Original Message --------
Subject: Re: [Bug-apl] related to ⎕QS
From: Juergen Sauermann < address@hidden>
Date: Sun, September 27, 2015 7:59 am
To: address@hidden,
address@hidden
Hi Alex,
yes. You echo "yadda"
into the interpreter.
From the interpreter's perspective this means that you
first enter a line
containing the word yadda,
which leads to a VALUE
ERROR because the
interpreter tries to reference a variable with that name.
Same as the following
when entered directly:
yadda
VALUE ERROR
yadda
^
Then you close stdin
and the interpreter complains.
^D or end-of-input detected (1). Use
)OFF to leave APL!
The reason is the following. Normally the stdin of a process is closed by
typing ^D.
However, just exiting on ^D
would make you loose your work. The APL interpreter
therefore
tells you to give command )OFF instead, which is the standard
way of ending an APL session.
This is fine if you run apl interactively. However, if you
run it as a script (like in your echo
example),
then this would lead to an infinite loop. Therefore
(1) the warning is printed only a few times, and
(2) when EOF (aka ^D) is still coming in (and at a
fast rate)
then the interpreter assumes that it is run from a script
and exits without )OFF.
/// Jürgen
Jürgen ,
You mentioned:
as
far as I remember the POST'ed
data can be read from stdin of
the CGI
script. So probably FILE_IO (read() or fgets()) may do
the job.
I'm a bit confused. I was messing around
with this and ran the following on the command line
to see where stdin is going:
echo "yadda" |
apl
The results are unexpected (at least to
me). It looks like APL is evaluating yadda as a
variable. I might have expected that it appear as a
string, so that I could read it in and store it (but
I'm not sure that is even the right thing to do).
Then this prints:
^D or end-of-input detected (1). Use )OFF to
leave APL!
^D or end-of-input detected (2). Use )OFF
to leave APL!
^D or end-of-input detected (3). Use )OFF
to leave APL!
^D or end-of-input detected (4). Use )OFF
to leave APL!
Then this prints:
and then the interpreter exits. Can this
behavior be explained?
-Alex
|