bug-apl
[Top][All Lists]
Advanced

[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: Tue, 29 Sep 2015 18:23:06 -0700
User-agent: Workspace Webmail 5.15.9

Elias,

Thank you for the suggestion. I'll give this a shot. 
-------- Original Message --------
Subject: Re: [Bug-apl] related to ⎕QS
From: Elias_Mårtenson <address@hidden>
Date: Tue, September 29, 2015 5:51 pm
To: Juergen Sauermann <address@hidden>
Cc: address@hidden, address@hidden

What you really want to do is to write a module for Apache for embedding GNU APL. This way you'll have a much cleaner interface,and performance will be better too.
The way this is done is documented here: http://httpd.apache.org/docs/2.4/developer/modguide.html
On 30 Sep 2015 03:49, "Juergen Sauermann" <address@hidden> wrote:
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


On 09/29/2015 02:41 AM, address@hidden wrote:
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


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?

-Alex




reply via email to

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