Đây là lệnh perlapio có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
perlapio - giao diện trừu tượng IO của perl.
SYNOPSIS
#define PERLIO_NOT_STDIO 0 / * Chỉ để cùng tồn tại với stdio * /
#bao gồm / * Thường thông qua #include * /
PerlIO * PerlIO_stdin (khoảng trống);
PerlIO * PerlIO_stdout (void);
PerlIO * PerlIO_stderr (void);
PerlIO * PerlIO_open (const char * đường dẫn, const char * mode);
PerlIO * PerlIO_fdopen (int fd, const char * mode);
PerlIO * PerlIO_reopen (const char * path, const char * mode, PerlIO * old); / * không dùng nữa * /
int PerlIO_close (PerlIO * f);
int PerlIO_stdoutf (const char * fmt, ...)
int PerlIO_puts (PerlIO * f, const char * string);
int PerlIO_putc (PerlIO * f, int ch);
SSize_t PerlIO_write (PerlIO * f, const void * buf, size_t numbyte);
int PerlIO_printf (PerlIO * f, const char * fmt, ...);
int PerlIO_vprintf (PerlIO * f, const char * fmt, va_list args);
int PerlIO_flush (PerlIO * f);
int PerlIO_eof (PerlIO * f);
int PerlIO_error (PerlIO * f);
void PerlIO_clearerr (PerlIO * f);
int PerlIO_getc (PerlIO * d);
int PerlIO_ungetc (PerlIO * f, int ch);
SSize_t PerlIO_read (PerlIO * f, void * buf, size_t numbyte);
int PerlIO_fileno (PerlIO * f);
void PerlIO_setlinebuf (PerlIO * f);
Off_t PerlIO_tell (PerlIO * f);
int PerlIO_seek (PerlIO * f, Off_t offset, int whence);
void PerlIO_rewind (PerlIO * f);
int PerlIO_getpos (PerlIO * f, SV * lưu); / * nguyên mẫu đã thay đổi * /
int PerlIO_setpos (PerlIO * f, SV * đã lưu); / * nguyên mẫu đã thay đổi * /
int PerlIO_fast_gets (PerlIO * f);
int PerlIO_has_cntptr (PerlIO * f);
SSize_t PerlIO_get_cnt (PerlIO * f);
char * PerlIO_get_ptr (PerlIO * f);
void PerlIO_set_ptrcnt (PerlIO * f, char * ptr, SSize_t count);
int PerlIO_canset_cnt (PerlIO * f); / * không dùng nữa * /
void PerlIO_set_cnt (PerlIO * f, số int); / * không dùng nữa * /
int PerlIO_has_base (PerlIO * f);
char * PerlIO_get_base (PerlIO * f);
SSize_t PerlIO_get_bufsiz (PerlIO * f);
PerlIO * PerlIO_importFILE (FILE * stdio, const char * mode);
FILE * PerlIO_exportFILE (PerlIO * f, int flags);
TẬP TIN * PerlIO_findFILE (PerlIO * f);
void PerlIO_releaseFILE (PerlIO * f, FILE * stdio);
int PerlIO_apply_layers (PerlIO * f, chế độ const char *, const char * lớp);
int PerlIO_binmode (PerlIO * f, int ptype, int imode, const char * layer);
void PerlIO_debug (const char * fmt, ...)
MÔ TẢ
Mã nguồn của Perl và các tiện ích mở rộng muốn có tính di động tối đa, nên sử dụng
thay vì những chức năng được định nghĩa trong ANSI C's stdio.h. Các tiêu đề perl (cụ thể là
"perlio.h") sẽ "# xác định" chúng theo cơ chế I / O được chọn lúc Định cấu hình.
Các chức năng được mô hình hóa dựa trên những chức năng trong stdio.h, nhưng thứ tự tham số đã được "sắp xếp một
nhỏ bé".
"PerlIO *" thay thế cho FILE *. Giống như FILE *, nó phải được coi là không trong suốt (nó là
có lẽ an toàn khi cho rằng nó là một con trỏ tới một cái gì đó).
Hiện có ba cách triển khai:
1. SỬ DỤNG_STDIO
Tất cả ở trên là các hàm # define'd to stdio hoặc là các hàm bao bọc tầm thường gọi
stdio. Trong trường hợp này có thể PerlIO * là một FILE *. Điều này đã được mặc định
triển khai kể từ khi trừu tượng được giới thiệu trong perl5.003_02.
2. SỬ DỤNG_PERLIO
Được giới thiệu ngay sau perl5.7.0, đây là sự triển khai lại phần trừu tượng ở trên
điều này cho phép kiểm soát nhiều hơn cách IO được thực hiện vì nó tách IO khỏi cách
hệ điều hành và thư viện C chọn để làm những việc. Đối với USE_PERLIO PerlIO * có một
lớp bổ sung của hướng dẫn - nó là một con trỏ đến một con trỏ. Điều này cho phép PerlIO *
để duy trì với một giá trị đã biết trong khi hoán đổi việc triển khai xung quanh bên dưới at
chạy thời gian. Trong trường hợp này, tất cả các hàm trên đều là các hàm true (nhưng rất đơn giản) gọi
triển khai cơ bản.
Đây là cách triển khai duy nhất mà "PerlIO_apply_layers ()" thực hiện bất kỳ điều gì
"thú vị".
Việc triển khai USE_PERLIO được mô tả trong perliol.
Bởi vì "perlio.h" là một lớp mỏng (để hiệu quả) nên ngữ nghĩa của những hàm này là
phần nào phụ thuộc vào việc triển khai bên dưới. Các biến thể này ở đâu
hiểu chúng được ghi chú bên dưới.
Trừ khi có ghi chú khác, các hàm trả về 0 khi thành công hoặc giá trị âm (thường là "EOF"
thường là -1) và đặt "errno" khi bị lỗi.
PerlIO_stdin (), PerlIO_stdout (), PerlIO_stderr ()
Sử dụng chúng thay vì "stdin", "stdout", "stderr". Chúng được viết để trông giống như
"hàm gọi" thay vì biến vì điều này làm cho nó dễ dàng hơn làm cho họ
hàm gọi nếu nền tảng không thể xuất dữ liệu sang các mô-đun đã tải hoặc nếu (giả sử) khác
"chủ đề" có thể có các giá trị khác nhau.
PerlIO_open (đường dẫn, chế độ), PerlIO_fdopen (fd, chế độ)
Những thứ này tương ứng với fopen ()/fdopen () và các đối số là như nhau. Trả về "NULL"
và đặt "errno" nếu có lỗi. Có thể có một giới hạn triển khai đối với
số lượng xử lý mở, có thể thấp hơn giới hạn về số lượng tệp đang mở
- "errno" có thể không được đặt khi "NULL" được trả về nếu vượt quá giới hạn này.
PerlIO_reopen (đường dẫn, chế độ, f)
Trong khi điều này hiện đang tồn tại trong cả ba triển khai thì bản thân perl không sử dụng nó.
As perl làm không sử dụng nó, it is không cũng thử nghiệm.
Perl thích "nhân bản" bộ mô tả cấp thấp mới thành bộ mô tả được sử dụng bởi
PerlIO hiện có. Điều này có thể trở thành hành vi của chức năng này trong tương lai.
PerlIO_printf (f, fmt, ...), PerlIO_vprintf (f, fmt, a)
đó là fprintf ()/vfprintf () tương đương.
PerlIO_stdoutf (fmt, ...)
Đây là printf () tương đương. printf là # được định nghĩa cho hàm này, vì vậy nó là (hiện tại)
hợp pháp để sử dụng "printf (fmt, ...)" trong các nguồn perl.
PerlIO_read (f, buf, count), PerlIO_write (f, buf, count)
Các chức năng này tương ứng với fread () và fwrite () nhưng các đối số và trả về
các giá trị khác nhau. Các PerlIO_read () và PerlIO_write () chữ ký đã được
được mô phỏng trên mức độ lành mạnh hơn đọc() và ghi () các chức năng thay thế: "Tệp"
đối số được truyền trước, chỉ có một "số lượng" và giá trị trả về có thể
phân biệt giữa lỗi và "EOF".
Trả về số lượng byte nếu thành công (có thể bằng XNUMX hoặc dương), trả về số âm
giá trị và đặt lỗi "errno". Tùy thuộc vào việc triển khai "errno" có thể là "EINTR"
nếu hoạt động bị gián đoạn bởi một tín hiệu.
PerlIO_close (f)
Tùy thuộc vào việc triển khai, "errno" có thể là "EINTR" nếu hoạt động bị gián đoạn bởi
tín hiệu.
PerlIO_puts (f, s), PerlIO_putc (f, c)
Những thứ này tương ứng với fputs () và fputc (). Lưu ý rằng các đối số đã được sửa đổi thành
có "tệp" trước.
PerlIO_ungetc (f, c)
Điều này tương ứng với ungetc (). Lưu ý rằng các đối số đã được sửa đổi để có "tệp"
đầu tiên. Các sắp xếp mà thao tác đọc tiếp theo sẽ trả về byte c. Mặc dù ngụ ý
"ký tự" trong tên chỉ các giá trị trong phạm vi 0..0xFF được xác định. Trả về byte
c về thành công hoặc -1 ("EOF") khi bị lỗi. Số byte có thể được "đẩy lùi"
có thể khác nhau, chỉ có 1 ký tự là chắc chắn và sau đó chỉ khi đó là ký tự cuối cùng
đã được đọc từ tay cầm.
PerlIO_getc (f)
Điều này tương ứng với getc (). Mặc dù c trong tên chỉ có dải byte 0..0xFF là
được hỗ trợ. Trả về ký tự đã đọc hoặc -1 ("EOF") khi bị lỗi.
PerlIO_eof (f)
Điều này tương ứng với feof (). Trả về một chỉ báo đúng / sai về việc xử lý có
ở cuối tệp. Đối với các thiết bị đầu cuối, điều này có thể "dính" hoặc không tùy thuộc vào
thực hiện. Cờ được xóa bởi PerlIO_seek (), hoặc là PerlIO_rewind ().
PerlIO_error (f)
Điều này tương ứng với ferror (). Trả về một chỉ báo đúng / sai về việc có
là một lỗi IO trên tay cầm.
PerlIO_fileno (f)
Điều này tương ứng với thư mục số(), lưu ý rằng trên một số nền tảng, ý nghĩa của "fileno" có thể
không khớp với Unix. Trả về -1 nếu xử lý không có bộ mô tả mở nào được liên kết với nó.
PerlIO_clearerr (f)
Điều này tương ứng với clearr (), tức là, xóa cờ 'error' và (thường) 'eof' cho
"dòng". Không trả về giá trị.
PerlIO_flush (f)
Điều này tương ứng với fflush (). Gửi bất kỳ dữ liệu ghi có bộ đệm nào vào tệp bên dưới.
Nếu được gọi với "NULL", điều này có thể xóa tất cả các luồng đang mở (hoặc kết xuất lõi với một số
Triển khai USE_STDIO). Gọi trên một tay cầm chỉ mở để đọc hoặc trên tay cầm cuối cùng
hoạt động được đọc thuộc một số loại có thể dẫn đến hành vi không xác định trên một số USE_STDIO
triển khai. Việc triển khai USE_PERLIO (các lớp) cố gắng hoạt động tốt hơn: nó
xóa tất cả các luồng đang mở khi được truyền "NULL" và cố gắng giữ lại dữ liệu khi đọc
dòng trong bộ đệm hoặc bằng cách tìm kiếm xử lý đến vị trí logic hiện tại.
PerlIO_seek (f, offset, whence)
Điều này tương ứng với fseek (). Gửi dữ liệu ghi có bộ đệm vào tệp bên dưới, hoặc
loại bỏ mọi dữ liệu đã đọc được lưu trong bộ đệm, sau đó định vị bộ mô tả tệp như được chỉ định bởi
bù đắp và thời gian (sic). Đây là điều chính xác cần làm khi chuyển đổi giữa các chế độ đọc
và viết trên cùng một tay cầm (xem các vấn đề với PerlIO_flush () ở trên). Chênh lệch là của
gõ "Off_t" là giá trị Định cấu hình perl có thể không giống với "off_t" của stdio.
PerlIO_tell (f)
Điều này tương ứng với ftell (). Trả về vị trí tệp hiện tại hoặc (Off_t) -1 trên
lỗi. Có thể chỉ trả về giá trị hệ thống "biết" mà không cần thực hiện lệnh gọi hoặc kiểm tra hệ thống
bộ mô tả tệp bên dưới (vì vậy việc sử dụng trên bộ mô tả tệp được chia sẻ sẽ không an toàn nếu không có
a PerlIO_seek ()). Giá trị trả về thuộc loại "Off_t" là giá trị Perl Định cấu hình
có thể không giống với "off_t" của stdio.
PerlIO_getpos (f, p), PerlIO_setpos (f, p)
Chúng tương ứng (lỏng lẻo) với fgetpos () và fsetpos (). Thay vì Fpos_t của stdio họ
mong đợi một "Giá trị vô hướng Perl" được thông qua. Những gì được lưu trữ ở đó cần được xem xét
mờ mịt. Bố cục của dữ liệu có thể khác nhau tùy từng xử lý. Khi không sử dụng stdio
hoặc nếu nền tảng không có lệnh gọi stdio thì chúng được triển khai theo
PerlIO_tell () và PerlIO_seek ().
PerlIO_rewind (f)
Điều này tương ứng với tua lại (). Nó thường được định nghĩa là
PerlIO_seek (f, (Off_t) 0L, SEEK_SET);
PerlIO_clearerr (f);
PerlIO_tmpfile ()
Điều này tương ứng với tmpfile (), tức là, trả về PerlIO ẩn danh hoặc NULL khi bị lỗi.
Hệ thống sẽ cố gắng tự động xóa tệp khi đóng. Trên Unix,
tệp thường được "hủy liên kết" ngay sau khi nó được tạo nên không quan trọng bằng cách nào nó được
đã đóng cửa. Trên các hệ thống khác, tệp chỉ có thể bị xóa nếu được đóng qua PerlIO_close ()
và / hoặc chương trình thoát qua "exit". Tùy thuộc vào việc thực hiện có thể có
"điều kiện cuộc đua" cho phép các quy trình khác truy cập vào tệp, mặc dù nói chung nó
sẽ an toàn hơn về mặt này so với ad. hoc. các kế hoạch.
PerlIO_setlinebuf (f)
Điều này tương ứng với setlinebuf (). Không trả về giá trị. Điều gì tạo nên một "dòng"
là việc triển khai phụ thuộc nhưng thường có nghĩa là việc viết "\ n" sẽ xóa bộ đệm.
Điều gì xảy ra với những thứ như "this \ nthat" là không chắc chắn. (Perl lõi sử dụng nó có thể khi nào
"phá giá"; nó không liên quan gì đến $ | tự động xả.)
Cùng tồn tại với phòng thu âm
Có phác thảo hỗ trợ cho sự đồng tồn tại của PerlIO với stdio. Rõ ràng nếu PerlIO là
được thực hiện trong điều kiện của stdio không có vấn đề gì. Tuy nhiên trong các trường hợp khác thì cơ chế
phải tồn tại để tạo một FILE * có thể được chuyển tới mã thư viện sẽ sử dụng
cuộc gọi stdio.
Bước đầu tiên là thêm dòng này:
#define PERLIO_NOT_STDIO 0
trước bao gồm bất kỳ tệp tiêu đề perl nào. (Điều này có thể sẽ trở thành mặc định ở một số
điểm). Điều đó ngăn "perlio.h" cố gắng #define các hàm stdio trên PerlIO
chức năng.
Mã XS có lẽ tốt hơn bằng cách sử dụng "typemap" nếu nó mong đợi các đối số FILE *. Chuẩn mực
sơ đồ đánh máy sẽ được điều chỉnh để hiểu được bất kỳ thay đổi nào trong lĩnh vực này.
PerlIO_importFILE (f, mode)
Được sử dụng để lấy PerlIO * từ FILE *.
Đối số mode phải là một chuỗi như sẽ được chuyển tới fopen / PerlIO_open. Nếu nó
sau đó là NULL - đối với hỗ trợ kế thừa - mã sẽ (tùy thuộc vào nền tảng và
triển khai) hoặc cố gắng xác định theo kinh nghiệm chế độ trong đó f đang mở,
hoặc sử dụng "r +" để chỉ ra luồng đọc / ghi.
Sau khi được gọi là FILE * nên CHỈ được đóng bằng cách gọi "PerlIO_close ()" trên
đã trả về PerlIO *.
PerlIO được đặt thành chế độ văn bản. Sử dụng PerlIO_binmode nếu đây không phải là chế độ mong muốn.
Đây là không mặt trái của PerlIO_exportFILE ().
PerlIO_exportFILE (f, mode)
Với PerlIO * hãy tạo một FILE 'gốc' * phù hợp để chuyển tới mã mong đợi là
được biên dịch và liên kết với ANSI C stdio.h. Đối số mode phải là một chuỗi như
sẽ được chuyển tới fopen / PerlIO_open. Nếu nó là NULL thì - đối với hỗ trợ kế thừa -
FILE * được mở ở chế độ giống như PerlIO *.
Thực tế là một FILE * như vậy đã được 'xuất' được ghi lại, (thông thường bằng cách đẩy một
new: stdio "layer" trên PerlIO *), có thể ảnh hưởng đến các hoạt động PerlIO trong tương lai trên
PerlIO * ban đầu. Bạn không nên gọi "fclose ()" trên tệp trừ khi bạn gọi
"PerlIO_releaseFILE ()" để tách nó khỏi PerlIO *. (Không được dùng
PerlIO_importFILE () để thực hiện việc tháo dỡ.)
Việc gọi hàm này nhiều lần sẽ tạo ra một FILE * trên mỗi cuộc gọi (và sẽ đẩy một
: lớp stdio mỗi lần như vậy).
PerlIO_releaseFILE (p, f)
Việc gọi PerlIO_releaseFILE thông báo cho PerlIO rằng mọi việc sử dụng FILE * đã hoàn tất. Nó là
bị xóa khỏi danh sách FILE * được xuất 'và PerlIO * được liên kết sẽ hoàn nguyên
đối với hành vi ban đầu của nó.
Sử dụng điều này để tách một tệp khỏi PerlIO * được liên kết bằng cách sử dụng
PerlIO_exportFILE ().
PerlIO_findFILE (f)
Trả về một FILE gốc * được sử dụng bởi một lớp stdio. Nếu không có, nó sẽ tạo ra một
với PerlIO_exportFILE. Trong cả hai trường hợp, FILE * phải được coi là thuộc về
Hệ thống con PerlIO và chỉ nên được đóng lại bằng cách gọi "PerlIO_close ()".
"Nhanh được" Chức năng
Ngoài API giống tiêu chuẩn được xác định cho đến nay ở trên còn có một "triển khai"
giao diện cho phép perl truy cập nội bộ của PerlIO. Các cuộc gọi sau đây tương ứng
tới các macro FILE_xxx khác nhau được xác định bởi Định cấu hình - hoặc tương đương của chúng trong
triển khai. Phần này chỉ thực sự quan tâm đến những người liên quan đến chi tiết
hành vi perl-core, triển khai ánh xạ PerlIO hoặc viết mã có thể sử dụng
"đọc trước" đã được thực hiện bởi hệ thống IO theo cùng một cách perl làm. Lưu ý rằng
bất kỳ mã nào sử dụng các giao diện này phải được chuẩn bị để thực hiện mọi thứ theo cách truyền thống nếu
tay cầm không hỗ trợ chúng.
PerlIO_fast_gets (f)
Trả về true nếu việc triển khai có tất cả các giao diện được yêu cầu để cho phép perl's
"sv_gets" để "bỏ qua" cơ chế IO thông thường. Điều này có thể thay đổi tùy theo tay cầm.
PerlIO_fast_gets (f) = PerlIO_has_cntptr (f) && \
PerlIO_canset_cnt (f) && \
'Có thể đặt con trỏ vào bộ đệm'
PerlIO_has_cntptr (f)
Việc triển khai có thể trả lại con trỏ về vị trí hiện tại trong "bộ đệm" và số lượng
byte có sẵn trong bộ đệm. Không sử dụng cái này - hãy sử dụng PerlIO_fast_gets.
PerlIO_get_cnt (f)
Trả về số byte có thể đọc được trong bộ đệm. Trả về bằng không hoặc âm có nghĩa là không còn nữa
byte có sẵn.
PerlIO_get_ptr (f)
Trả lại con trỏ đến byte có thể đọc tiếp theo trong bộ đệm, truy cập qua con trỏ
(hội thảo) chỉ an toàn nếu PerlIO_get_cnt () đã trả về một giá trị dương. Chỉ một
phần bù dương lên đến giá trị được trả lại bởi PerlIO_get_cnt () được cho phép.
PerlIO_set_ptrcnt (f, p, c)
Đặt con trỏ vào bộ đệm và số byte vẫn còn trong bộ đệm. Chỉ nên sử dụng
để đặt con trỏ trong phạm vi được ngụ ý bởi các lệnh gọi trước đó tới "PerlIO_get_ptr" và
"PerlIO_get_cnt". Hai giá trị phải nhất quán với nhau (thực hiện
có thể chỉ sử dụng một trong hai hoặc có thể yêu cầu cả hai).
PerlIO_canset_cnt (f)
Việc triển khai có thể điều chỉnh ý tưởng của nó về số byte trong bộ đệm. Không sử dụng cái này
- sử dụng PerlIO_fast_gets.
PerlIO_set_cnt (f, c)
Ít người biết đến - đặt số lượng byte trong bộ đệm. Không được chấp nhận. Chỉ sử dụng được nếu
PerlIO_canset_cnt () trả về true. Hiện chỉ được sử dụng trong doio.c để buộc số lượng ít hơn
hơn -1 đến -1. Có lẽ phải là PerlIO_set_empty hoặc tương tự. Cuộc gọi này thực sự có thể
không làm gì nếu "đếm" được suy ra từ con trỏ và một "giới hạn". Không sử dụng cái này - sử dụng
PerlIO_set_ptrcnt ().
PerlIO_has_base (f)
Trả về true nếu việc triển khai có bộ đệm và có thể trả về con trỏ đến toàn bộ bộ đệm
và kích thước của nó. Được perl sử dụng cho -T / -B các bài kiểm tra. Các mục đích sử dụng khác sẽ rất ít người biết đến ...
PerlIO_get_base (f)
Trả hàng Bắt đầu của bộ đệm. Chỉ truy cập các hiệu số dương trong bộ đệm lên đến giá trị
trả lại bởi PerlIO_get_bufsiz ().
PerlIO_get_bufsiz (f)
Trả lại Tổng số con số of byte trong bộ đệm, đây không phải là số có thể
đọc, cũng không phải số lượng bộ nhớ được cấp phát cho bộ đệm. Đúng hơn nó là những gì
hệ điều hành và / hoặc quá trình triển khai đã xảy ra với "read ()" (hoặc bất cứ thứ gì) IO lần trước
đã được yêu cầu.
Nền tảng khác Chức năng
PerlIO_apply_layers (f, chế độ, lớp)
Giao diện mới để triển khai USE_PERLIO. Các lớp ": crlf" và ": raw" là
chỉ những cái được phép triển khai khác và những cái đó bị bỏ qua một cách im lặng. (Kể từ
perl5.8 ": raw" không được dùng nữa.) Sử dụng PerlIO_binmode () bên dưới cho trường hợp xách tay.
PerlIO_binmode (f, ptype, imode, layer)
Móc được sử dụng bởi toán tử "binmode" của perl. ptype là nhân vật của perl cho loại
ngoài:
'<' đọc
'>' viết
'+' đọc / ghi
imode là "O_BINARY" hoặc "O_TEXT".
lớp là một chuỗi các lớp để áp dụng, chỉ ": crlf" mới có ý nghĩa đối với USE_PERLIO
trường hợp. (Kể từ perl5.8 ": raw" không được dùng nữa để chuyển NULL.)
Trường hợp xách tay là:
PerlIO_binmode (f, ptype, O_BINARY, NULL);
và
PerlIO_binmode (f, ptype, O_TEXT, ": crlf");
Trên Unix, những cuộc gọi này có thể không có tác dụng gì. Ở những nơi khác, họ thay đổi "\ n" thành
Bản dịch CR, LF và có thể gây ra chỉ báo văn bản đặc biệt "cuối tệp"
được viết hoặc được vinh danh trên đã đọc. Hiệu quả của việc thực hiện cuộc gọi sau khi thực hiện bất kỳ IO nào đối với
xử lý tùy thuộc vào việc thực hiện. (Nó có thể bị bỏ qua, ảnh hưởng đến bất kỳ dữ liệu nào
cũng đã được lưu vào bộ đệm hoặc chỉ áp dụng cho dữ liệu tiếp theo.)
PerlIO_debug (fmt, ...)
PerlIO_debug là một printf ()-chức năng giống như có thể được sử dụng để gỡ lỗi. Không trở lại
giá trị. Công dụng chính của nó là bên trong PerlIO, nơi sử dụng printf thực, cảnh báo() vv sẽ
đệ quy gọi PerlIO và là một vấn đề.
PerlIO_debug ghi vào tệp được đặt tên bởi $ ENV {'PERLIO_DEBUG'} cách sử dụng thông thường có thể
Vỏ Bourne (sh, ksh, bash, zsh, ash, ...):
PERLIO_DEBUG = / dev / tty ./perl somescript một số args
Csh / Tcsh:
setenv PERLIO_DEBUG / dev / tty
./perl somescript một số args
Nếu bạn có tiện ích "env":
vi PERLIO_DEBUG = / dev / tty ./perl somescript some args
Win32:
đặt PERLIO_DEBUG = CON
perl somescript một số args
Nếu $ ENV {'PERLIO_DEBUG'} không được đặt PerlIO_debug () là không-op.
Sử dụng perlapio trực tuyến bằng các dịch vụ onworks.net