Date: Monday December 28, 2020 @ 07:16 Author: argrath Update of /cvsroot/perldocjp/docs/perl/5.26.1 In directory sf-cvs:/tmp/cvs-serv136401/perl/5.26.1 Added Files: perlclib.pod Log Message: 5.28.0/perlclib =================================================================== File: perlclib.pod Status: Up-to-date Working revision: 1.1 Sun Dec 27 22:16:25 2020 Repository revision: 1.1 /cvsroot/perldocjp/docs/perl/5.26.1/perlclib.pod,v Sticky Options: -kb Existing Tags: No Tags Exist -------------- next part -------------- Index: docs/perl/5.26.1/perlclib.pod diff -u /dev/null docs/perl/5.26.1/perlclib.pod:1.1 --- /dev/null Mon Dec 28 07:16:25 2020 +++ docs/perl/5.26.1/perlclib.pod Mon Dec 28 07:16:25 2020 @@ -0,0 +1,494 @@ + +=encoding euc-jp + +=head1 NAME + +=begin original + +perlclib - Internal replacements for standard C library functions + +=end original + +perlclib - ɸ½à C ¥é¥¤¥Ö¥é¥ê´Ø¿ô¤ÎÆâÉôŪ¤ÊÂåÍÑÉÊ + +=head1 DESCRIPTION + +=begin original + +One thing Perl porters should note is that F<perl> doesn't tend to use that +much of the C standard library internally; you'll see very little use of, +for example, the F<ctype.h> functions in there. This is because Perl +tends to reimplement or abstract standard library functions, so that we +know exactly how they're going to operate. + +=end original + +Perl porters ¤¬Ãí°Õ¤¹¤ë¤Ù¤»ö¤Î¤Ò¤È¤Ä¤Ï¡¢F<perl> ¤ÏÆâÉô¤Ç C ɸ½à¥é¥¤¥Ö¥é¥ê¤ò +¤¢¤Þ¤ê»È¤ï¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¤¤ë¤È¸À¤¦¤³¤È¤Ç¤¹; Î㤨¤Ð¡¢F<ctype.h> ´Ø¿ô¤Ï +¤Û¤È¤ó¤É»È¤ï¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤Ëµ¤ÉÕ¤¯¤Ç¤·¤ç¤¦¡£ +¤³¤ì¤Ï¡¢¤É¤Î¤è¤¦¤ÊÁàºî¤ò¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¤«¤òÀµ³Î¤ËÃΤ뤿¤á¤Ë¡¢Perl ¤Ï +ɸ½à¥é¥¤¥Ö¥é¥ê´Ø¿ô¤òºÆ¼ÂÁõ¤·¤¿¤êÃê¾Ý²½¤·¤¿¤ê¤·¤è¤¦¤È¤¹¤ë¤«¤é¤Ç¤¹¡£ + +=begin original + +This is a reference card for people who are familiar with the C library +and who want to do things the Perl way; to tell them which functions +they ought to use instead of the more normal C functions. + +=end original + +¤³¤ì¤Ï C ¥é¥¤¥Ö¥é¥ê¤Ë´·¤ì¤Æ¤¤¤Æ Perl Êý¼°¤Ç²¿¤«¤ò¤·¤¿¤¤¿Í¡¹¤Î¤¿¤á¤Î +¥ê¥Õ¥¡¥ì¥ó¥¹¥«¡¼¥É¤Ç¤¹; ¤è¤êÉáÄ̤ΠC ´Ø¿ô¤ÎÂå¤ï¤ê¤Ë»È¤¦¤Ù¤´Ø¿ô¤ò¼¨¤·¤Þ¤¹¡£ + +=head2 Conventions + +(µ¬Ìó) + +=begin original + +In the following tables: + +=end original + +°Ê²¼¤Îɽ¤Ç: + +=over 3 + +=item C<t> + +=begin original + +is a type. + +=end original + +¤Ï·¿¤Ç¤¹¡£ + +=item C<p> + +=begin original + +is a pointer. + +=end original + +¤Ï¥Ý¥¤¥ó¥¿¤Ç¤¹¡£ + +=item C<n> + +=begin original + +is a number. + +=end original + +¤Ï¿ôÃͤǤ¹¡£ + +=item C<s> + +=begin original + +is a string. + +=end original + +¤Ïʸ»úÎó¤Ç¤¹¡£ + +=back + +=begin original + +C<sv>, C<av>, C<hv>, etc. represent variables of their respective types. + +=end original + +C<sv>, C<av>, C<hv> ¤Ê¤É¤Ï¤½¤ì¤¾¤ìÂбþ¤¹¤ë·¿¤ÎÊÑ¿ô¤Ç¤¹¡£ + +=head2 File Operations + +(¥Õ¥¡¥¤¥ëÁàºî) + +=begin original + +Instead of the F<stdio.h> functions, you should use the Perl abstraction +layer. Instead of C<FILE*> types, you need to be handling C<PerlIO*> +types. Don't forget that with the new PerlIO layered I/O abstraction +C<FILE*> types may not even be available. See also the C<perlapio> +documentation for more information about the following functions: + +=end original + +F<stdio.h> ´Ø¿ô¤ÎÂå¤ï¤ê¤Ë¡¢Perl Ãê¾ÝÁؤò»È¤¦¤Ù¤¤Ç¤¹¡£ +C<FILE*> ·¿¤ÎÂå¤ï¤ê¤Ë¡¢C<PerlIO*> ·¿¤ò°·¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ +¿·¤·¤¤ PerlIO ÁؤΠI/O Ãê¾Ý²½¤Ç¤Ï C<FILE*> ·¿¤ÏÍøÍѤǤ¤Ê¤¤¤«¤âÃΤì¤Ê¤¤¤³¤È¤ò +˺¤ì¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ +°Ê²¼¤Î´Ø¿ô¤Ë´Ø¤¹¤ë¤µ¤é¤Ê¤ë¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï C<perlapio> ʸ½ñ¤ò +»²¾È¤·¤Æ¤¯¤À¤µ¤¤: + + Instead Of: Use: + + stdin PerlIO_stdin() + stdout PerlIO_stdout() + stderr PerlIO_stderr() + + fopen(fn, mode) PerlIO_open(fn, mode) + freopen(fn, mode, stream) PerlIO_reopen(fn, mode, perlio) (Dep- + recated) + fflush(stream) PerlIO_flush(perlio) + fclose(stream) PerlIO_close(perlio) + +=head2 File Input and Output + +(¥Õ¥¡¥¤¥ëÆþÎϤȽÐÎÏ) + + Instead Of: Use: + + fprintf(stream, fmt, ...) PerlIO_printf(perlio, fmt, ...) + + [f]getc(stream) PerlIO_getc(perlio) + [f]putc(stream, n) PerlIO_putc(perlio, n) + ungetc(n, stream) PerlIO_ungetc(perlio, n) + +=begin original + +Note that the PerlIO equivalents of C<fread> and C<fwrite> are slightly +different from their C library counterparts: + +=end original + +C<fread> ¤È C<fwrite> ¤Î PerlIO ¤ÎÂåÍÑÉÊ¤Ï C ¥é¥¤¥Ö¥é¥ê¤ÎÂбþʪ¤È¤Ï +¾¯¤·°ã¤¦¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤: + + fread(p, size, n, stream) PerlIO_read(perlio, buf, numbytes) + fwrite(p, size, n, stream) PerlIO_write(perlio, buf, numbytes) + + fputs(s, stream) PerlIO_puts(perlio, s) + +=begin original + +There is no equivalent to C<fgets>; one should use C<sv_gets> instead: + +=end original + +C<fgets> ¤ÎÅù²Áʪ¤Ï¤¢¤ê¤Þ¤»¤ó; Âå¤ï¤ê¤Ë C<sv_gets> ¤ò»È¤¦¤Ù¤¤Ç¤¹: + + fgets(s, n, stream) sv_gets(sv, perlio, append) + +=head2 File Positioning + +(¥Õ¥¡¥¤¥ë°ÌÃÖ) + + Instead Of: Use: + + feof(stream) PerlIO_eof(perlio) + fseek(stream, n, whence) PerlIO_seek(perlio, n, whence) + rewind(stream) PerlIO_rewind(perlio) + + fgetpos(stream, p) PerlIO_getpos(perlio, sv) + fsetpos(stream, p) PerlIO_setpos(perlio, sv) + + ferror(stream) PerlIO_error(perlio) + clearerr(stream) PerlIO_clearerr(perlio) + +=head2 Memory Management and String Handling + +(¥á¥â¥ê´ÉÍý¤Èʸ»úÎóÁàºî) + + Instead Of: Use: + + t* p = malloc(n) Newx(p, n, t) + t* p = calloc(n, s) Newxz(p, n, t) + p = realloc(p, n) Renew(p, n, t) + memcpy(dst, src, n) Copy(src, dst, n, t) + memmove(dst, src, n) Move(src, dst, n, t) + memcpy(dst, src, sizeof(t)) StructCopy(src, dst, t) + memset(dst, 0, n * sizeof(t)) Zero(dst, n, t) + memzero(dst, 0) Zero(dst, n, char) + free(p) Safefree(p) + + strdup(p) savepv(p) + strndup(p, n) savepvn(p, n) (Hey, strndup doesn't + exist!) + + strstr(big, little) instr(big, little) + strcmp(s1, s2) strLE(s1, s2) / strEQ(s1, s2) + / strGT(s1,s2) + strncmp(s1, s2, n) strnNE(s1, s2, n) / strnEQ(s1, s2, n) + + memcmp(p1, p2, n) memNE(p1, p2, n) + !memcmp(p1, p2, n) memEQ(p1, p2, n) + +=begin original + +Notice the different order of arguments to C<Copy> and C<Move> than used +in C<memcpy> and C<memmove>. + +=end original + +C<Copy> ¤ª¤è¤Ó C<Move> ¤Î°ú¿ô¤Î½çÈÖ¤Ï C<memcpy> ¤ª¤è¤Ó C<memmove> ¤È°Û¤Ê¤ë +¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ + +=begin original + +Most of the time, though, you'll want to be dealing with SVs internally +instead of raw C<char *> strings: + +=end original + +¤·¤«¤·¡¢ÂçÄñ¤Î¾ì¹ç¡¢À¸¤Î C<char *> ʸ»úÎó¤Ç¤Ï¤Ê¤¯ÆâÉôŪ¤Ë SV ¤ò +°·¤¤¤¿¤¤¤Ç¤·¤ç¤¦: + + strlen(s) sv_len(sv) + strcpy(dt, src) sv_setpv(sv, s) + strncpy(dt, src, n) sv_setpvn(sv, s, n) + strcat(dt, src) sv_catpv(sv, s) + strncat(dt, src) sv_catpvn(sv, s) + sprintf(s, fmt, ...) sv_setpvf(sv, fmt, ...) + +=begin original + +Note also the existence of C<sv_catpvf> and C<sv_vcatpvfn>, combining +concatenation with formatting. + +=end original + +Ï¢·ë¤È¥Õ¥©¡¼¥Þ¥Ã¥Æ¥£¥ó¥°¤ò·ë¹ç¤·¤¿ C<sv_catpvf> ¤ª¤è¤Ó C<sv_vcatpvfn> ¤¬ +¤¢¤ë¤³¤È¤Ë¤âÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ + +=begin original + +Sometimes instead of zeroing the allocated heap by using Newxz() you +should consider "poisoning" the data. This means writing a bit +pattern into it that should be illegal as pointers (and floating point +numbers), and also hopefully surprising enough as integers, so that +any code attempting to use the data without forethought will break +sooner rather than later. Poisoning can be done using the Poison() +macros, which have similar arguments to Zero(): + +=end original + +»þ¡¹¡¢Newxz() ¤ò»È¤Ã¤Æ³ä¤êÅö¤Æ¤é¤ì¤¿¥Ò¡¼¥×¤ò¥¼¥í¤Ë¤¹¤ëÂå¤ï¤ê¤Ë¥Ç¡¼¥¿¤Ë +¡ÖÆÇÆþ¤ì¡×¤·¤¿¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ +¤³¤ì¤Ï¡¢¥Ý¥¤¥ó¥¿(¤ª¤è¤ÓÉâÆ°¾®¿ôÅÀ¿ô)¤È¤·¤ÆÉÔÀµ¤Ë¤Ê¤ê¡¢¤Ç¤¤ì¤ÐÀ°¿ô¤È¤·¤Æ¤â +½½Ê¬¤Ë¶Ã¤¯¤Ù¤¥Ó¥Ã¥È¥Ñ¥¿¡¼¥ó¤ò½ñ¤¹þ¤ó¤Ç¡¢¹Í¤¨¤Ê¤·¤Ë¥Ç¡¼¥¿¤ò»È¤ª¤¦¤È¤¹¤ë +¥³¡¼¥É¤¬Áá¤á¤Ë²õ¤ì¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤Ç¤¹¡£ +ÆÇÆþ¤ì¤Ï Zero() ¤È»÷¤¿¤è¤¦¤Ê°ú¿ô¤ò»ý¤Ä Poison() ¥Þ¥¯¥í¤Ç¹Ô¤¨¤Þ¤¹: + + PoisonWith(dst, n, t, b) scribble memory with byte b + PoisonNew(dst, n, t) equal to PoisonWith(dst, n, t, 0xAB) + PoisonFree(dst, n, t) equal to PoisonWith(dst, n, t, 0xEF) + Poison(dst, n, t) equal to PoisonFree(dst, n, t) + +=head2 Character Class Tests + +(ʸ»ú¥¯¥é¥¹¥Æ¥¹¥È) + +=begin original + +There are several types of character class tests that Perl implements. +The only ones described here are those that directly correspond to C +library functions that operate on 8-bit characters, but there are +equivalents that operate on wide characters, and UTF-8 encoded strings. +All are more fully described in L<perlapi/Character classification> and +L<perlapi/Character case changing>. + +=end original + +Perl ¤¬¼ÂÁõ¤·¤Æ¤¤¤ë¤¤¤¯¤Ä¤«¼ïÎà¤Îʸ»ú¥¯¥é¥¹¥Æ¥¹¥È¤¬¤¢¤ê¤Þ¤¹¡£ +¤³¤³¤Çµ½Ò¤·¤Æ¤¤¤ë¤Î¤Ï 8 ¥Ó¥Ã¥Èʸ»ú¤òÁàºî¤¹¤ë C ¥é¥¤¥Ö¥é¥¤¥Ö¥é¥ê¤ËľÀÜ +Âбþ¤·¤Æ¤¤¤ë¤â¤Î¤Î¤ß¤Ç¤¹¤¬¡¢¥ï¥¤¥Éʸ»ú¡¢UTF-8 ¥¨¥ó¥³¡¼¥Éʸ»ú¤òÁàºî¤¹¤ë +Åù²Áʪ¤â¤¢¤ê¤Þ¤¹¡£ +Á´¤Æ¤Ï L<perlapi/Character classification> ¤È +L<perlapi/Character case changing> ¤Ç¤è¤ê´°Á´¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ + +=begin original + +The C library routines listed in the table below return values based on +the current locale. Use the entries in the final column for that +functionality. The other two columns always assume a POSIX (or C) +locale. The entries in the ASCII column are only meaningful for ASCII +inputs, returning FALSE for anything else. Use these only when you +B<know> that is what you want. The entries in the Latin1 column assume +that the non-ASCII 8-bit characters are as Unicode defines, them, the +same as ISO-8859-1, often called Latin 1. + +=end original + +¸å½Ò¤¹¤ëɽ¤Ëµó¤²¤é¤ì¤Æ¤¤¤ë C ¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤Ï¸½ºß¤Î¥í¥±¡¼¥ë¤ò´ð¤Ë¤·¤¿ +ÃͤòÊÖ¤·¤Þ¤¹¡£ +¤³¤Îµ¡Ç½¤Î¤¿¤á¤Ë¤ÏºÇ¸å¤ÎÎó¤Î¥¨¥ó¥È¥ê¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ +»Ä¤ê¤ÎÆó¤Ä¤ÎÎó¤Ï¾ï¤Ë POSIX (¤¢¤ë¤¤¤Ï C) ¥í¥±¡¼¥ë¤ò²¾Äꤷ¤Þ¤¹¡£ +ASCII Îó¤Î¥¨¥ó¥È¥ê¤Ï ASCII ÆþÎϤǤΤ߰ÕÌ£¤ò»ý¤Á¡¢¤½¤ì°Ê³°¤Ç¤Ï FALSE ¤ò +ÊÖ¤·¤Þ¤¹¡£ +¤³¤ì¤¬Ë¾¤ó¤Ç¤¤¤ë¤â¤Î¤Ç¤¢¤ë¤È B<ʬ¤«¤Ã¤Æ¤¤¤ë> ¾ì¹ç¤Ë¤Î¤ß¤³¤ì¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ +Latin1 Îó¤Î¥¨¥ó¥È¥ê¤Ï¡¢Èó ASCII 8 ¥Ó¥Ã¥Èʸ»ú¤Ï Unicode ¤¬ÄêµÁ¤·¤Æ¤¤¤ë¤è¤¦¤Ë¡¢ +ISO-8859-1 (¤·¤Ð¤·¤Ð Latin 1 ¤È¸Æ¤Ð¤ì¤Þ¤¹) ¤Ç¤¢¤ë¤È²¾Äꤷ¤Þ¤¹¡£ + +=begin original + + Instead Of: Use for ASCII: Use for Latin1: Use for locale: + +=end original + + ¸µ: ASCII ÍÑ: Latin1 ÍÑ: ¥í¥±¡¼¥ëÍÑ: + + isalnum(c) isALPHANUMERIC(c) isALPHANUMERIC_L1(c) isALPHANUMERIC_LC(c) + isalpha(c) isALPHA(c) isALPHA_L1(c) isALPHA_LC(u ) + isascii(c) isASCII(c) isASCII_LC(c) + isblank(c) isBLANK(c) isBLANK_L1(c) isBLANK_LC(c) + iscntrl(c) isCNTRL(c) isCNTRL_L1(c) isCNTRL_LC(c) + isdigit(c) isDIGIT(c) isDIGIT_L1(c) isDIGIT_LC(c) + isgraph(c) isGRAPH(c) isGRAPH_L1(c) isGRAPH_LC(c) + islower(c) isLOWER(c) isLOWER_L1(c) isLOWER_LC(c) + isprint(c) isPRINT(c) isPRINT_L1(c) isPRINT_LC(c) + ispunct(c) isPUNCT(c) isPUNCT_L1(c) isPUNCT_LC(c) + isspace(c) isSPACE(c) isSPACE_L1(c) isSPACE_LC(c) + isupper(c) isUPPER(c) isUPPER_L1(c) isUPPER_LC(c) + isxdigit(c) isXDIGIT(c) isXDIGIT_L1(c) isXDIGIT_LC(c) + + tolower(c) toLOWER(c) toLOWER_L1(c) toLOWER_LC(c) + toupper(c) toUPPER(c) toUPPER_LC(c) + +=begin original + +To emphasize that you are operating only on ASCII characters, you can +append C<_A> to each of the macros in the ASCII column: C<isALPHA_A>, +C<isDIGIT_A>, and so on. + +=end original + +Ç°¤ò²¡¤·¤Æ¤ª¤¯¤È¡¢ASCII ʸ»ú¤Î¤ß¤òÁàºî¤¹¤ë¤Ê¤é¡¢ASCII ¤ÎÎó¤Î¤½¤ì¤¾¤ì¤Î +¥Þ¥¯¥í¤Ë C<_A> ¤òÄɲä·¤¿¤â¤Î¤¬»È¤¨¤Þ¤¹: C<isALPHA_A>, C<isDIGIT_A> ¤Ê¤É¤Ç¤¹¡£ + +=begin original + +(There is no entry in the Latin1 column for C<isascii> even though there +is an C<isASCII_L1>, which is identical to C<isASCII>; the +latter name is clearer. There is no entry in the Latin1 column for +C<toupper> because the result can be non-Latin1. You have to use +C<toUPPER_uni>, as described in L<perlapi/Character case changing>.) + +=end original + +(C<isASCII> ¤ÈÅù²Á¤Ê C<isASCII_L1> ¤È¤¤¤¦¤â¤Î¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢C<isascii> ¤Î +Latin1 ¤ÎÎó¤Ï¤¢¤ê¤Þ¤»¤ó; Á°¼Ô¤Î̾Á°¤ÎÊý¤¬ÌÀ³Î¤Ç¤¹¡£ +C<toupper> ¤Î Latin1 ¤ÎÎó¤Ï¤¢¤ê¤Þ¤»¤ó; ·ë²Ì¤ÏÈó Latin1 ¤Ë +¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤¤«¤é¤Ç¤¹¡£ +L<perlapi/Character case changing> ¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤ë C<toUPPER_uni> ¤ò +»È¤¦É¬Íפ¬¤¢¤ê¤Þ¤¹¡£) + +=head2 F<stdlib.h> functions + +(F<stdlib.h> ´Ø¿ô) + + Instead Of: Use: + + atof(s) Atof(s) + atoi(s) grok_atoUV(s, &uv, &e) + atol(s) grok_atoUV(s, &uv, &e) + strtod(s, &p) Nothing. Just don't use it. + strtol(s, &p, n) grok_atoUV(s, &uv, &e) + strtoul(s, &p, n) grok_atoUV(s, &uv, &e) + +=begin original + +Typical use is to do range checks on C<uv> before casting: + +=end original + +ŵ·¿Åª¤Ê»ÈÍÑË¡¤Ï¡¢¥¥ã¥¹¥È¤¹¤ëÁ°¤Î C<uv> ¤ÎÈÏ°Ï¥Á¥§¥Ã¥¯¤Ç¤¹: + + int i; UV uv; char* end_ptr; + if (grok_atoUV(input, &uv, &end_ptr) + && uv <= INT_MAX) + i = (int)uv; + ... /* continue parsing from end_ptr */ + } else { + ... /* parse error: not a decimal integer in range 0 .. MAX_IV */ + } + +=begin original + +Notice also the C<grok_bin>, C<grok_hex>, and C<grok_oct> functions in +F<numeric.c> for converting strings representing numbers in the respective +bases into C<NV>s. Note that grok_atoUV() doesn't handle negative inputs, +or leading whitespace (being purposefully strict). + +=end original + +¤½¤ì¤¾¤ì¤Î´ð¿ô¤Ç¿ôÃͤòɽ¸½¤·¤Æ¤¤¤ëʸ»úÎó¤ò C<NV> ¤ËÊÑ´¹¤¹¤ë¤¿¤á¤Î +F<numeric.c> ¤Ë¤¢¤ë C<grok_bin>, C<grok_hex>, C<grok_oct> ´Ø¿ô¤Ë¤â +ÃíÌܤ·¤Æ¤¯¤À¤µ¤¤¡£ +grok_atoUV() ¤ÏÉé¤ÎÆþÎϤäÁ¬Åò¤Î¶õÇò¤ò°·¤ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤ +(°Õ¿ÞŪ¤Ë¸·Ì©¤Ë¤·¤Æ¤¤¤Þ¤¹)¡£ + +=begin original + +Note that strtol() and strtoul() may be disguised as Strtol(), Strtoul(), +Atol(), Atoul(). Avoid those, too. + +=end original + +strtol() ¤È strtoul() ¤Ï Strtol(), Strtoul(), Atol(), Atoul() ¤È¸À¤¦·Á¤Ë +µ¶Áõ¤·¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ +¤³¤ì¤é¤âÈò¤±¤Æ¤¯¤À¤µ¤¤¡£ + +=begin original + +In theory C<Strtol> and C<Strtoul> may not be defined if the machine perl is +built on doesn't actually have strtol and strtoul. But as those 2 +functions are part of the 1989 ANSI C spec we suspect you'll find them +everywhere by now. + +=end original + +ÍýÏÀŪ¤Ë¤Ï¡¢perl ¤¬¥Ó¥ë¥É¤µ¤ì¤¿¥Þ¥·¥ó¤Ë¼ÂºÝ¤Ë strtol ¤ä strtoul ¤¬¤Ê¤¤ +¾ì¹ç¡¢C<Strtol> ¤È C<Strtoul> ¤ÏÄêµÁ¤µ¤ì¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡£ +¤·¤«¤·¤³¤ì¤é¤Î 2 ´Ø¿ô¤Ï 1989 ANSI C »ÈÍѤΰìÉô¤Ê¤Î¤Ç¡¢º£¤Î¤È¤³¤í¤É¤³¤Ç¤â +¤³¤ì¤é¤ò¸«¤Ä¤±¤é¤ì¤ë¤È»×¤ï¤ì¤Þ¤¹¡£ + + int rand() double Drand01() + srand(n) { seedDrand01((Rand_seed_t)n); + PL_srand_called = TRUE; } + + exit(n) my_exit(n) + system(s) Don't. Look at pp_system or use my_popen. + + getenv(s) PerlEnv_getenv(s) + setenv(s, val) my_setenv(s, val) + +=head2 Miscellaneous functions + +(¤µ¤Þ¤¶¤Þ¤Ê´Ø¿ô) + +=begin original + +You should not even B<want> to use F<setjmp.h> functions, but if you +think you do, use the C<JMPENV> stack in F<scope.h> instead. + +=end original + +F<setjmp.h> ´Ø¿ô¤ò»È¤ª¤¦¤È B<»×¤¦> ¤³¤È¤¹¤é¤¹¤ë¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¢¤â¤· +¤½¤¦¹Í¤¨¤Æ¤¤¤ë¤Ê¤é¡¢Âå¤ï¤ê¤Ë F<scope.h> ¤Î C<JMPENV> ¥¹¥¿¥Ã¥¯¤ò +»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ + +=begin original + +For C<signal>/C<sigaction>, use C<rsignal(signo, handler)>. + +=end original + +C<signal>/C<sigaction> ¤Ë¤Ä¤¤¤Æ¤Ï¡¢C<rsignal(signo, handler)> ¤ò +»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ + +=head1 SEE ALSO + +L<perlapi>, L<perlapio>, L<perlguts> + +=begin meta + +Translate: SHIRAKATA Kentaro <argra****@ub32*****> +Status: completed + +=end meta +