[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] related to ⎕QS

From: alexweiner
Subject: Re: [Bug-apl] related to ⎕QS
Date: Mon, 28 Sep 2015 17:41:25 -0700
User-agent: Workspace Webmail 5.15.9


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:


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

On 09/26/2015 12:36 AM, address@hidden wrote:
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:
*** end of input

and then the interpreter exits. Can this behavior be explained?


reply via email to

[Prev in Thread] Current Thread [Next in Thread]