PDA

View Full Version : Hỏi về Perl??



levanphong7887
02-06-2009, 20:14
Chào các bạn!
mình có đoạn code perl sau:


#!/perl/bin/perl

1.use Win32::ODBC;
2.$db = new Win32::ODBC("My_database");

3.print "Content-type: text/html\n\n";
4.print "<html><head><title>DoLogin</title></head>";
5.print "<body>\n";

# this is the first thing the user sees in the browser
if(!$db){print "khong ket noi duoc csdl";}
# get list of table names and print them out





mình không hiểu 3 dòng 3,4,5 dùng để làm gì hết?
nhưng nếu mình đặt hàm print trước 3 dòng đó thì ko print ra được,còn bỏ luôn 3 dòng đó thì vẫn ko xong.ko hiểu???

còn kết nối với csdl nữa.My_database mình đã cấu hình ODBC trong control panel rồi mà sao vấn ko kết nối được. $db cứ bằng FALSE hoài à.ai biết thì xin chỉ với.Thanks a lot!

à còn một lỗi khi truy xuất đến thư mục cgi-bin nữa:
You don't have permission to access /cgi-bin/ on this server.


Search trên mạng rồi mà ko tìm được câu trả lời...

ichuot
25-09-2009, 02:25
hi bạn công ty mình đang tuyển lập trinh viên perl...nếu được bạn có thể gửi hồ sơ vào email trung.nguyenhuyky@harveynash.vn, YM trungnguyendc2006

Ông này buồn cười nhỉ?

Dòng 3 là dòng quan trọng phải đặt đầu tiên mới tạo dc trang html. Nó có nhiệm vụ tạo HTTP header.

Nếu bạn thay dòng đó thành


print "Content-type: text/plain\n\n";

Thì chỉ xuất ra trình duyệt dạng Text bình thường không phải HTML.

Nếu Perl của bạn có load CGI.pm (CGI Module) thì củng có thể viết thành thế này


#!/usr/local/bin/perl -w
use CGI;
$q = new CGI;
print $q->header('text/html');
...


Dòng 4,5 dùng để xuất ra các tag (thẻ) của html. Sau khi đã tạo HTTP Header ở dòng 3. Nếu HTTP Header của bạn là text/plain thì dòng 4,5 chẳng có ý nghĩa gì.

Không kết nối CSDL dc có khả năng là Win32 chưa cài Extention đó! Mà thường thì mình thấy chủ yếu người ta dùng DBD::ODBC. Có lẽ bạn đang dùng ActivePerl? Nếu ActivePerl thì không dùng dc Win32::ODBC đâu!