mick_hutton
asked on
Perl/win95/website 1.1
I have a simple counter from a book which can't read the data in the counter.txt. Is there a DOS/WIN95 version of chmod or does the script(see below) need a modification. It would also be nice if I could run perl scripts without the Dos window coming up everytime-Any help gratefully appreciated
Mick
#!/usr/local/perl/bin/perl
print "Content-type: text/html", "\n\n";
$count_file = "/usr/local/perl/bin/httpd _1.4.2/cou nt.txt";
if (open (FILE, ">" . $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, ">" . $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
Mick
#!/usr/local/perl/bin/perl
print "Content-type: text/html", "\n\n";
$count_file = "/usr/local/perl/bin/httpd
if (open (FILE, ">" . $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, ">" . $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I'm afriaid it still won't work Goes straight to [Sorry can't read the data file] as before, I think I got the path right but how do you intialise count.txt in win95 and set the count.txt for access (like chmod 777 in perl)? maybe this is the problem
Thanks Mick
Thanks Mick
All files in windows95 are mod 777(world read,write, and execute).
I think I found it, windows95 does not allow two periods in a filename. Its prabably hanging up on httpd_1.4.2 try changing the path to only one period(maybe httpd_1_4.2).
Also check to make sure the file exists and has a number in it followed by a newline.
I think I found it, windows95 does not allow two periods in a filename. Its prabably hanging up on httpd_1.4.2 try changing the path to only one period(maybe httpd_1_4.2).
Also check to make sure the file exists and has a number in it followed by a newline.
ASKER
Thanks again but no joy. Do you have to do anything to the file in win95 to mod 777 or is it already set to that?
I,m new to this so let me explain what I've done so far.
Website 1.1 set as localhost in win95 all other simple scripts work so far this is the first one to open a file.
I have now set mapping in website setup /counter/(url) mapped to the full dir path to my count.txt. The script now looks like this and comes up with syntax OK but the same result [can't read data from data file]
#!/usr/local/perl/bin/perl
print "Content-type: text/html", "\n\n";
$count_file = "/counter/count.txt";
if (open (FILE, $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
I have also ammended the count.txt to [0, "\n"; ] no boxed brackets.
I think this is all thankyou again in advance
Mick
I,m new to this so let me explain what I've done so far.
Website 1.1 set as localhost in win95 all other simple scripts work so far this is the first one to open a file.
I have now set mapping in website setup /counter/(url) mapped to the full dir path to my count.txt. The script now looks like this and comes up with syntax OK but the same result [can't read data from data file]
#!/usr/local/perl/bin/perl
print "Content-type: text/html", "\n\n";
$count_file = "/counter/count.txt";
if (open (FILE, $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
I have also ammended the count.txt to [0, "\n"; ] no boxed brackets.
I think this is all thankyou again in advance
Mick
ASKER
Please ignore above comment I now have counter working I had to put in dir path with \\ double backslash and not url map I set up in website. Now problem is it counts 2 everytime by adding 2 to the count.txt and also the content: text/html printed with the visit number I got round this by print "\n\n"; instead as below
#!/usr/local/perl/bin/perl
print "\n\n";
$count_file = "d:\\website\\htdocs\\coun ter\\count .txt";
if (open (FILE, $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, ">" . $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
Hopefully we are nearly there thanks for your help
#!/usr/local/perl/bin/perl
print "\n\n";
$count_file = "d:\\website\\htdocs\\coun
if (open (FILE, $count_file)) {
$no_accesses = <FILE>;
close (FILE);
if (open (FILE, ">" . $count_file)) {
$no_accesses++;
print FILE $no_accesses;
close (FILE);
print $no_accesses;
} else {
print "[ Can't write to data file! Counter not incremented! ]", "\n";
}
} else {
print "[ Sorry! Can't read the counter data file ]", "\n";
}
exit (0);
Hopefully we are nearly there thanks for your help
I don't see anything wrong with the script. Could it be that you are calling it twice in your webpage?
ASKER
Thats what I thought but I have tried various permutations and can't see why. Thanks anyway I will keep trying
Mick
Mick
ASKER