Ace::Local - use giface, tace or gifaceclient to open a local connection to an
Ace database
use Ace::Local
my $ace = Ace::Local->connect(-path=>'/usr/local/acedb/elegans');
$ace->query('find author Se*');
die "Query unsuccessful" unless $ace->status;
$ace->query('show');
while ($ace->encore) {
print $ace->read;
}
This class is provided for low-level access to local (non-networked) Ace
databases via the
giface program. You will generally not need to access
it directly. Use Ace.pm instead.
For the sake of completeness, the method can also use the
aceclient
program for its access. However the Ace::AceDB class is more efficient for
this purpose.
$accessor = Ace::Local->connect(-path=>$path_to_database);
Connect to the database at the indicated path using
giface and return a
connection object (an "accessor").
Giface must be on the
current search path. Multiple accessors may be open simultaneously.
Arguments include:
- -path
- Path to the database (location of the "wspec/"
directory).
- -program
- Used to indicate the location of the desired giface
or gifaceclient executable. You may also use tace or
aceclient, but in that case the asGIF() functionality will
nog work. Can be used to override the search path.
- -host
- Used when invoking gifaceclient. Indicates the host
to connect to.
- -port
- Used when invoking gifaceclient. Indicates the port
to connect to.
- -nosync
- Ordinarily Ace::Local synchronizes with the tace/giface
prompt, throwing out all warnings and copyright messages. If this is set,
Ace::Local will not do so. In this case you must call the
low_read() method until it returns undef in order to
synchronize.
$status = $accessor->query('query string');
Send the query string to the server and return a true value if successful. You
must then call
read() repeatedly in order to fetch the query result.
Read the result from the last query sent to the server and return it as a
string. ACE may return the result in pieces, breaking between whole objects.
You may need to read repeatedly in order to fetch the entire result. Canonical
example:
$accessor->query("find Sequence D*");
die "Got an error ",$accessor->error() if $accessor->status == STATUS_ERROR;
while ($accessor->status == STATUS_PENDING) {
$result .= $accessor->read;
}
Read whatever data's available, or undef if none. This is only used by the
ace.pl replacement for giface/tace.
Return the status code from the last operation. Status codes are exported by
default when you
use Ace.pm. The status codes you may see are:
STATUS_WAITING The server is waiting for a query.
STATUS_PENDING A query has been sent and Ace is waiting for
you to read() the result.
STATUS_ERROR A communications or syntax error has occurred
May return a more detailed error code supplied by Ace. Error checking is not
fully implemented.
This method will return true after you have performed one or more
read()
operations, and indicates that there is more data to read.
encore() is functionally equivalent to:
$encore = $accessor->status == STATUS_PENDING;
In fact, this is how it's implemented.
Sets or queries the
auto_save variable. If true, the "save"
command will be issued automatically before the connection to the database is
severed. The default is true.
Examples:
$accessor->auto_save(1);
$flag = $accessor->auto_save;
Ace, Ace::Object, Ace::Iterator, Ace::Model
Lincoln Stein <
[email protected]> with extensive help from Jean Thierry-Mieg
<
[email protected]>
Copyright (c) 1997-1998, Lincoln D. Stein
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself. See DISCLAIMER.txt for disclaimers of
warranty.