[Scottish] The following e-mail was misidentified as spam by the ferocious spam-detector

John Gordon Ollason john at houseofdeer.co.uk
Mon Sep 10 17:51:11 BST 2007


I posted the following message to the linux board yesterday and received  
notification that it had been misidentified as spam and would need to be  
assessed visually by the moderator, whom I am sure has better things to do  
with his time than sift through spam-like e-mails so I am trying again.

John Ollason

------- Forwarded message -------
From: "John Gordon Ollason" <john at houseofdeer.co.uk>
To: scottish at mailman.lug.org.uk
Cc:
Subject: Strange Perl problem: tie
Date: Sun, 09 Sep 2007 15:54:15 +0100

Greetings,

In order to minimise the maintenance of a website I set up a configuration
file using GDBM_file, and accessed it using the tie function in Perl for a
set of cgi-bin scripts.
Everything has worked fine (after the usual messing about remembering to
sort out permissions) under Solaris, and under linux, but I have now tried
to use the same method under Debian linux and I have a problem. Everything
works as I should have hoped that it would when the script is executed
  from the cgi-bin directory, or from anywhere else in my file tree that I
have tried, but when it is accessed via http, the tie simply does not take
place. I have had helpful discussions with support at my ISP and we are at
a loss as to how to proceed. The code of a test script is given below:

----
#! /usr/bin/perl
use Fcntl;
use GDBM_File;
$debug=TRUE;
$rwflag=O_RDWR();
$crflag=O_CREAT();
$exflag=O_EXCL();
$exclusivelock=2;
$unlock=8;

$configdatafilename="/www/john/.../configdata";
tie %config,"GDBM_File",$configdatafilename,$rwflag|$crflag,0644
or $found=FALSE;
if ($debug eq TRUE)
{
     print 'Content-type: text/html',"\n","\n",'<html><body>hi',"<br>\n";
     if ($found eq FALSE)
     {
        print "Can't find configdata.<br>";
     }
     @keys=sort(keys(%config));
     foreach $key (@keys)
     {
       print $key,' ',$config{$key},"<br>\n";
     }
     print "hi</body></html>","\n";
}
untie %config;
exit

---
Invoked from the cgi-bin file, the script finds the configdata file, and
prints the messages and the keys, and the contents of the tied hash.

Invoked via http the output is

hi
Can't find configdata
hi

The data file is not in the cgi-bin directory, but I have moved it there,
and it makes no difference to the problem.

  From error messages, the details of the software involved are:

Apache/2.0.54 (Debian GNU/Linux) PHP/5.2.1-0.dotdeb.1 with Suhosin-Patch
mod_ssl/2.0.54 OpenSSL/0.9.7e mod_perl/1.999.21 Perl/v5.8.4

Has anybody any idea about what I am doing wrong?

John O.





More information about the Scottish mailing list