āĻāĻāĻŋ āĻšāĻ˛ āĻĒāĻžāĻ°āĻ˛āĻāĻŋ āĻāĻŽāĻžāĻ¨ā§āĻĄ āĻ¯āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻžāĻ§āĻŋāĻ āĻŦāĻŋāĻ¨āĻžāĻŽā§āĻ˛ā§āĻ¯ā§āĻ° āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻ¸ā§āĻā§āĻļāĻ¨ āĻ¯ā§āĻŽāĻ¨ āĻāĻŦā§āĻ¨ā§āĻā§ āĻ āĻ¨āĻ˛āĻžāĻāĻ¨, āĻĢā§āĻĄā§āĻ°āĻž āĻ āĻ¨āĻ˛āĻžāĻāĻ¨, āĻāĻāĻ¨ā§āĻĄā§āĻ āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻāĻŽā§āĻ˛ā§āĻāĻ° āĻŦāĻž MAC OS āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ āĻāĻŽā§āĻ˛ā§āĻāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ OnWorks āĻĢā§āĻ°āĻŋ āĻšā§āĻ¸ā§āĻāĻŋāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨āĻāĻžāĻ°ā§āĻ¤ā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻžāĻ°ā§āĻ¯āĻā§āĻ°āĻŽ:
NAME āĻāĻ°
perltie - āĻāĻŋāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻāĻāĻāĻŋ āĻ āĻŦāĻā§āĻā§āĻ āĻā§āĻ˛āĻžāĻ¸ āĻ˛ā§āĻāĻžāĻ¨ā§ āĻ¯āĻžāĻ¯āĻŧ
āĻ¸āĻžāĻāĻ¨ā§āĻĒāĻŋāĻ¸āĻŋāĻ¸
āĻāĻžāĻ variable, CLASSNAME, LIST
$object = āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ
āĻĒāĻžāĻ°ā§āĻ˛ā§āĻ° 5.0 āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻāĻā§, āĻāĻāĻāĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§ dbmopen() āĻāĻāĻāĻŋ āĻ āĻ¨-āĻĄāĻŋāĻ¸ā§āĻ āĻ¸āĻāĻ¯ā§āĻ āĻāĻ°āĻ¤ā§
āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻāĻ¨āĻŋāĻā§āĻ¸ā§ āĻĄāĻžāĻāĻžāĻŦā§āĻ¸ āĻĄāĻŋāĻŦāĻŋāĻāĻŽ(3x) āĻ¤āĻžāĻĻā§āĻ° āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻāĻāĻāĻŋ %HASH-āĻ āĻāĻžāĻĻā§āĻāĻ°ā§ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻ°ā§āĻ¨āĨ¤
āĻ¯āĻžāĻāĻšā§āĻ, āĻ¤āĻžāĻĻā§āĻ° āĻĒāĻžāĻ°ā§āĻ˛ āĻšāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻĄāĻŋāĻŦāĻŋāĻāĻŽ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦāĻž āĻ āĻ¨ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¨āĻ¯āĻŧ
āĻāĻāĻ¯āĻŧāĻ, āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻāĻ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻā§ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŦāĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻĒā§āĻ°āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ¤ā§ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤
āĻāĻāĻ¨ āĻ¤ā§āĻŽāĻŋ āĻĒāĻžāĻ°.
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻŋāĻ° āĻāĻžāĻ() āĻĢāĻžāĻāĻļāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§ (āĻĒā§āĻ¯āĻžāĻā§āĻ) āĻāĻŦāĻĻā§āĻ§ āĻāĻ°ā§ āĻ¯āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻŦā§
āĻ¯ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ¨ā§āĻ¯ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨. āĻāĻāĻŦāĻžāĻ° āĻāĻ āĻāĻžāĻĻā§āĻāĻŋ āĻ¸āĻā§āĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ˛ā§,
āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻ¸āĻ āĻŋāĻ āĻā§āĻ˛āĻžāĻ¸ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ˛āĻā§āĻ˛āĻŋāĻā§ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°ā§āĨ¤ āĻĻā§āĻ¯
āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻāĻŋāĻ˛āĻ¤āĻž āĻ˛ā§āĻāĻŋāĻ¯āĻŧā§ āĻāĻā§ āĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻŽā§āĻĨāĻĄ āĻāĻ˛ā§āĻ° āĻāĻĄāĻŧāĻžāĻ˛ā§āĨ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¨āĻžāĻŽ āĻ¸āĻŦ āĻāĻā§
CAPS, āĻ¯āĻž āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛āĻ¨ āĻ¯āĻž āĻĒāĻžāĻ°ā§āĻ˛ āĻāĻā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¯ā§ āĻ¸ā§āĻā§āĻ˛āĻŋāĻā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤āĻāĻžāĻŦā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ
āĻŦāĻ°āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ -- āĻ āĻŋāĻ āĻŽāĻ¤ āĻļā§āĻ°ā§ () āĻāĻŦāĻ āĻļā§āĻˇ() āĻĢāĻžāĻāĻļāĻ¨āĨ¤
āĻŽāĻ§ā§āĻ¯ā§ āĻāĻžāĻ() call, "variable" āĻšāĻ˛ āĻŽāĻ¨ā§āĻ¤ā§āĻ°āĻŽā§āĻā§āĻ§ āĻāĻ°āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻ¨āĻžāĻŽāĨ¤ "CLASSNAME" āĻšāĻ˛ā§ˇ
āĻ¸āĻ āĻŋāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ¸ā§āĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻļā§āĻ°ā§āĻŖā§āĻ° āĻ¨āĻžāĻŽāĨ¤ āĻā§āĻ¨ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻāĻ¨
"āĻ˛āĻŋāĻ¸ā§āĻ" āĻ¸ā§āĻ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ - āĻŽāĻžāĻ¨ā§
TIESCALAR(), TIEARRAY(), TIEHASH(), āĻŦāĻž āĻāĻžāĻāĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛(). (āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻā§āĻ˛āĻŋ āĻāĻŽāĻ¨ āĻ¯ā§āĻā§āĻ¤āĻŋ
āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§ dbminit() C āĻāĻ° āĻĢāĻžāĻāĻļāĻ¨) "āĻ¨āĻ¤ā§āĻ¨" āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻāĻŋ
āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§ āĻāĻžāĻ() āĻĢāĻžāĻāĻļāĻ¨, āĻ¯āĻž āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻāĻ˛ā§ āĻĻāĻ°āĻāĻžāĻ°ā§ āĻšāĻŦā§
"CLASSNAME"-āĻ āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°ā§āĻ¨āĨ¤ (āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ¸āĻ˛ā§ āĻāĻāĻāĻŋ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§ āĻ¨āĻž
āĻ¸āĻ āĻŋāĻ "āĻāĻžāĻāĻĒ" (āĻ¯ā§āĻŽāĻ¨, HASH āĻŦāĻž "CLASSNAME") āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻāĻĒā§āĻ°ā§āĻŖ āĻŦāĻ¸ā§āĻ¤ā§āĨ¤) āĻāĻĒāĻ¨āĻŋ
āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻžāĻāĻ§āĻž() āĻĢāĻžāĻāĻļāĻ¨.
āĻ āĻ¸āĻĻā§āĻļ dbmopen(), āĻĻā§āĻ¯ āĻāĻžāĻ() āĻĢāĻžāĻāĻļāĻ¨ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛ "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°" āĻŦāĻž "āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨" āĻāĻ°āĻŦā§ āĻ¨āĻž - āĻāĻĒāĻ¨āĻŋ
āĻāĻāĻž āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ¨āĻŋāĻā§āĻā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§.
tying āĻ¸ā§āĻā§āĻ˛āĻžāĻ°
āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻļā§āĻ°ā§āĻŖāĻŋāĻā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤: TIESCALAR, FETCH,
āĻ¸ā§āĻā§āĻ° āĻāĻ°ā§āĻ¨, āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ UNTI āĻāĻŦāĻ/āĻ āĻĨāĻŦāĻž āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻ¸ā§āĻ¨ āĻĒāĻžāĻ˛āĻžāĻā§āĻ°āĻŽā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¤āĻžāĻāĻžāĻ¨, āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸ā§āĻā§āĻ˛āĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻā§āĻ˛āĻžāĻ¸ āĻ¯āĻž āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻŽāĻ¤ āĻāĻŋāĻā§ āĻāĻ°āĻ¤ā§:
$his_speed, 'Nice', getppid();
āĻāĻžāĻ $my_speed, 'Nice', $$;
āĻāĻŦāĻ āĻāĻāĻ¨ āĻ¯āĻāĻ¨āĻ āĻāĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¯ā§āĻā§āĻ¨ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ° āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧ
āĻāĻĻā§āĻ§āĻžāĻ° āĻāĻŦāĻ āĻĢāĻŋāĻ°ā§. āĻ¯āĻĻāĻŋ āĻ¸ā§āĻ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻā§āĻ˛āĻŋ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋāĻ° āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ°
āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤!
āĻāĻŽāĻ°āĻž Jarkko Hietaniemi āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ[āĻāĻŽā§āĻ˛ āĻ¸ā§āĻ°āĻā§āĻˇāĻŋāĻ¤]> āĻāĻ° BSD::āĻ°āĻŋāĻ¸ā§āĻ°ā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸ (āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻ¨āĻ¯āĻŧ) āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻ¤ā§
āĻāĻĒāĻ¨āĻžāĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĨā§āĻā§ PRIO_PROCESS, PRIO_MIN, āĻāĻŦāĻ PRIO_MAX āĻ§ā§āĻ°ā§āĻŦāĻ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§
āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻĒāĻžāĻ¨() āĻāĻŦāĻ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻ¨ āĻāĻ°() āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻāĻ˛āĨ¤ āĻāĻāĻžāĻ¨ā§ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻ¨āĻžāĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻŽā§āĻāĻžāĻ°;
āĻāĻžāĻ°ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
BSD::āĻ¸āĻŽā§āĻĒāĻĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻ ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
$Nice::DEBUG = 0 āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧ $Nice::DEBUG;
TIESCALAR āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢāĻŋāĻ°ā§ āĻāĻļāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻā§āĻ˛āĻžāĻ°ā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ (āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻŦā§āĻ¨āĻžāĻŽā§) āĻ¯āĻž āĻāĻāĻŋ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻā§āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻāĻžāĻāĻ¸ā§āĻā§āĻ¯āĻžāĻ˛āĻžāĻ° {
āĻāĻŽāĻžāĻ° $āĻā§āĻ˛āĻžāĻ¸ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻĒāĻŋāĻĄ = āĻļāĻŋāĻĢāĻ || $$; #0 āĻŽāĻžāĻ¨ā§ āĻāĻŽāĻŋ
āĻ¯āĻĻāĻŋ ($pid!~ /^\d+$/) {
carp "Nice::Tie::Scalar āĻĒā§āĻ¯āĻŧā§āĻā§ āĻ -āĻ¸āĻāĻā§āĻ¯āĻžāĻ¸ā§āĻāĻ pid $pid" āĻ¯āĻĻāĻŋ $^W;
undef āĻĢā§āĻ°āĻ¤;
}
āĻ¯āĻĻāĻŋ āĻ¨āĻž (0, $pid āĻšāĻ¤ā§āĻ¯āĻž) { # EPERM āĻŦāĻž ERSCH, āĻā§āĻ¨ āĻ¸āĻ¨ā§āĻĻā§āĻš āĻ¨ā§āĻ
carp "āĻ¨āĻžāĻāĻ¸::āĻāĻžāĻ::āĻ¸ā§āĻā§āĻ¯āĻžāĻ˛āĻžāĻ° āĻāĻžāĻ°āĻžāĻĒ āĻĒāĻŋāĻĄ āĻĒā§āĻ¯āĻŧā§āĻā§ $pid: $!" āĻ¯āĻĻāĻŋ $^W;
undef āĻĢā§āĻ°āĻ¤;
}
āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢā§āĻ°āĻ¤ \$pid, $class;
}
āĻāĻ āĻāĻžāĻ āĻā§āĻ˛āĻžāĻ¸ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ¤ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻā§ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°
āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¯āĻĻāĻŋāĻ āĻāĻāĻāĻžāĻŦā§ dbmopen() āĻāĻžāĻ, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻā§āĻ˛āĻžāĻ¸ āĻāĻžāĻ˛ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻ¤ āĻā§āĻˇāĻŽāĻžāĻļā§āĻ˛ āĻšāĻ¤ā§ āĻāĻžāĻ āĻ¨āĻžāĨ¤ āĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻāĻ¤ āĻšāĻŦā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĻā§āĻāĻ¤ā§ āĻā§āĻ˛ā§āĻŦāĻžāĻ˛ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ $^W āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§
āĻ¯āĻžāĻāĻšā§āĻ āĻāĻāĻā§ āĻāĻāĻ¯āĻŧāĻžāĻāĨ¤
āĻāĻ āĻāĻ¨ā§āĻ¨
āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ (āĻĒāĻĄāĻŧā§āĻ¨)āĨ¤ āĻāĻāĻž
āĻāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻā§āĻ¨ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§ āĻ¨āĻž, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦāĻāĻžāĻ°ā§ āĻŦāĻ¸ā§āĻ¤ā§
āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻāĻŽāĻ°āĻž āĻŽā§āĻāĻžāĻŦā§āĻ˛āĻž āĻāĻ°āĻāĻŋ. āĻāĻžāĻ°āĻŖ āĻāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ SCALAR āĻ°ā§āĻĢ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ
āĻŦāĻžāĻāĻ§āĻž āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻŦāĻ¸ā§āĻ¤ā§, āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ $$self āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋāĻā§ āĻ¸āĻā§āĻāĻŋāĻ¤ āĻĒā§āĻ°āĻā§āĻ¤ āĻŽāĻžāĻ¨ āĻĒā§āĻ¤ā§ āĻĻā§āĻ¯āĻŧ
āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¨ā§āĻā§āĻ° āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻ¸ā§āĻ āĻāĻ¸āĻ˛ āĻŽāĻžāĻ¨ āĻšāĻ˛ āĻ¸ā§āĻ āĻĒā§āĻ°āĻ¸ā§āĻ¸ āĻāĻāĻĄāĻŋ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻ°āĻž āĻŦā§āĻāĻ§ā§āĻāĻŋ
āĻāĻŽāĻžāĻĻā§āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛āĨ¤
āĻ¸āĻžāĻŦ FETCH {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
"āĻā§āĻ˛ āĻāĻžāĻāĻĒ" āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ°ā§āĻĢ $self;
croak "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ" āĻ¯āĻĻāĻŋ @_;
āĻāĻŽāĻžāĻ° $āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻ¤āĻž;
āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧ($!) = 0;
$nicety = āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° (PRIO_PROCESS, $$self);
āĻ¯āĻĻāĻŋ ($!) { croak "getpriority āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧā§āĻā§: $!" }
āĻĢā§āĻ°āĻ¤ $nity;
}
āĻ°ā§āĻ¨āĻŋāĻ¸ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ˛ā§ āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻ°āĻž āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦāĻžāĻ° (āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻāĻ¤ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ°) āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ -- āĻāĻā§
āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¨ā§āĻ, āĻāĻŦāĻ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¸āĻ āĻŋāĻ āĻāĻŋāĻ¨āĻŋāĻ¸āĨ¤
āĻāĻ, āĻŽāĻžāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨
āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻ¸ā§āĻ āĻāĻ°āĻž (āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°āĻž) āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻ¤āĻžāĻ° āĻĒāĻ°ā§āĻ
āĻāĻ° āĻ¸ā§āĻŦ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸, āĻāĻāĻŋ āĻāĻāĻāĻŋ (āĻāĻŦāĻ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ) āĻ¯ā§āĻā§āĻ¤āĻŋ āĻāĻļāĻž āĻāĻ°ā§: āĻ¨āĻ¤ā§āĻ¨ āĻŽāĻžāĻ¨
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻā§āĨ¤ STORE āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻŽāĻžāĻ¨ āĻĢā§āĻ°āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž; āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŋāĻ
āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨āĻŽā§āĻ¨ā§āĻā§āĻ° āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻŽāĻžāĻ¨ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž FETCH āĻāĻ° āĻ¸āĻžāĻĨā§ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ° {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
"āĻā§āĻ˛ āĻāĻžāĻāĻĒ" āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ°ā§āĻĢ $self;
āĻāĻŽāĻžāĻ° $new_nicety = āĻļāĻŋāĻĢāĻ;
croak "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ" āĻ¯āĻĻāĻŋ @_;
āĻ¯āĻĻāĻŋ ($new_nicety < PRIO_MIN) {
āĻāĻžāĻ°ā§āĻĒ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ¨ā§āĻāĻĢ
"āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž: āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° %d āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° %d āĻĨā§āĻā§ āĻāĻŽ",
$new_nicety, PRIO_MIN āĻ¯āĻĻāĻŋ $^W;
$new_nicety = PRIO_MIN;
}
āĻ¯āĻĻāĻŋ ($new_nicety > PRIO_MAX) {
āĻāĻžāĻ°ā§āĻĒ āĻ¸ā§āĻĒā§āĻ°āĻŋāĻ¨ā§āĻāĻĢ
"āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž: āĻ¸āĻ°ā§āĻŦā§āĻā§āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° %d āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° %d āĻŦā§āĻļāĻŋ",
$new_nicety, PRIO_MAX āĻ¯āĻĻāĻŋ $^W;
$new_nicety = PRIO_MAX;
}
āĻ¯āĻĻāĻŋ āĻ¨āĻž (āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ¸ā§āĻ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ°(PRIO_PROCESS, $$self, $new_nicety)) {
āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ "āĻ¸ā§āĻ āĻ āĻā§āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ° āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧā§āĻā§: $!";
}
}
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ "āĻāĻ¨āĻāĻŋ" āĻāĻā§āĨ¤ āĻāĻ āĻā§āĻ˛āĻžāĻ¸ āĻšāĻ˛ā§ āĻāĻžāĻā§ āĻ˛āĻžāĻāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻžāĻ¨āĻ¤ā§ āĻšāĻŦā§ āĻāĻāĻ¨ āĻāĻ° āĻā§āĻ¨ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¨āĻžāĨ¤ (āĻ āĻŦāĻļā§āĻ¯āĻ āĻ§ā§āĻŦāĻāĻ¸ āĻāĻžāĻĄāĻŧāĻžāĨ¤) āĻĻā§āĻā§āĻ¨ "The
āĻāĻ°ā§ āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻāĻžāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻā§ "āĻāĻ¨āĻāĻŋ" āĻā§āĻāĻāĻž"āĨ¤
āĻāĻ āĻ§ā§āĻŦāĻāĻ¸
āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋāĻā§ āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻāĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻ¸āĻā§āĻā§
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ āĻŦāĻā§āĻā§āĻ āĻā§āĻ˛āĻžāĻ¸ā§, āĻāĻ āĻāĻžāĻ¤ā§āĻ¯āĻŧ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻā§āĻŦ āĻāĻŽāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ, āĻāĻžāĻ°āĻŖ āĻĒāĻžāĻ°ā§āĻ˛ āĻāĻāĻŋāĻā§ āĻĄāĻŋāĻ˛āĻ˛ā§āĻā§āĻ āĻāĻ°ā§
āĻŽāĻ°āĻŋāĻŦāĻ¨ā§āĻĄ āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻŽā§āĻŽāĻ°āĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§--āĻāĻāĻŋ C++ āĻ¨āĻ¯āĻŧ, āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¨ā§āĻ¨āĨ¤ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻāĻĻā§āĻĻā§āĻļā§āĻ¯ā§ āĻāĻāĻžāĻ¨ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°ā§āĻ¨āĨ¤
āĻāĻĒ āĻ§ā§āĻŦāĻāĻ¸ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
"āĻā§āĻ˛ āĻāĻžāĻāĻĒ" āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ°ā§āĻĢ $self;
carp "[ Nice::DESTROY pid $$self ]" āĻ¯āĻĻāĻŋ $Nice::DEBUG;
}
āĻ¯ā§ āĻāĻāĻŋ āĻāĻā§ āĻ¸āĻŦ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§. āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻāĻāĻŋ āĻ¯āĻž āĻāĻā§ āĻ¤āĻžāĻ° āĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ, āĻāĻžāĻ°āĻŖ
āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ¤āĻž, āĻĻā§āĻĸāĻŧāĻ¤āĻž āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻāĻāĻžāĻ¨ā§ āĻāĻŋāĻā§ āĻāĻŽā§āĻāĻžāĻ° āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°ā§āĻāĻŋ
āĻ¨āĻžāĻ¨ā§āĻĻāĻ¨āĻŋāĻāĻ¤āĻž āĻ¸āĻšāĻ TIESCALAR āĻā§āĻ˛āĻžāĻ¸ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸āĻŽā§āĻāĻŦāĨ¤
tying āĻ ā§āĻ¯āĻžāĻ°ā§āĻā§āĻ˛āĻŋāĻ°
āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻļā§āĻ°ā§āĻŖāĻŋāĻā§ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤: TIEARRAY,
FETCH, STORE, FETCHSIZE, STORESIZE, CLEAR āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ unNTIE āĻāĻŦāĻ/āĻ āĻĨāĻŦāĻž āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°ā§āĻ¨āĨ¤
FETCHSIZE āĻāĻŦāĻ STORESIZE $#array āĻāĻŦāĻ āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ "scalar(@array)" āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻŦā§āĻ¯āĻŦāĻšā§āĻ¤ āĻšāĻ¯āĻŧ
āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸āĨ¤
POP, PUSH, SHIFT, UNSHIFT, SPLICE, DELETE, āĻāĻŦāĻ EXISTS āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¯āĻĻāĻŋ āĻĒāĻžāĻ°ā§āĻ˛
āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ (āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻ āĻšāĻžāĻ¤ā§āĻ°) āĻ¨āĻžāĻŽā§āĻ° āĻ āĻĒāĻžāĻ°ā§āĻāĻ°āĻā§ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧāĨ¤ āĻĻā§āĻ¯
āĻāĻžāĻ::āĻ ā§āĻ¯āĻžāĻ°ā§ āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻžāĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§āĻā§āĻˇāĻŋāĻ¤ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻ¤ā§ āĻā§āĻ˛āĻžāĻ¸ āĻāĻāĻāĻŋ āĻŦā§āĻ¸ āĻā§āĻ˛āĻžāĻ¸ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻāĻĒāĻ°ā§āĻ° āĻŽā§āĻ˛āĻŋāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§āĨ¤ DELETE āĻāĻŦāĻ EXISTS-āĻāĻ° āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨
āĻāĻžāĻ::āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ¸āĻšāĻāĻāĻžāĻŦā§ "āĻā§āĻ°ā§āĻ"āĨ¤
āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§ EXTEND āĻŦāĻ˛āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻĒāĻžāĻ°ā§āĻ˛ āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§ āĻĒā§āĻ°āĻžāĻ-āĻŦāĻ°ā§āĻ§āĻŋāĻ¤ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻĨāĻžāĻāĻŦā§
āĻ ā§āĻ¯āĻžāĻ°ā§āĨ¤
āĻāĻ āĻāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻŦ āĻ¯āĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¤ā§āĻ°āĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻžāĻ°āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻāĻžāĻ°ā§āĻ° āĻā§āĻ¯āĻŧā§ āĻŦāĻĄāĻŧ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻ¨ āĻ¤āĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ āĻ¨ā§āĻŦā§āĻ¨āĨ¤ āĻāĻ¨ā§āĻ¯
āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ:
FixedElem_Array āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
tie @array, 'FixedElem_Array', 3;
$array[0] = 'āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛'; # āĻ āĻŋāĻ āĻāĻā§.
$array[1] = 'āĻā§āĻā§āĻ°'; # āĻŦā§āĻ¯āĻ¤āĻŋāĻā§āĻ°āĻŽ, āĻĻā§āĻ°ā§āĻā§āĻ¯('āĻā§āĻā§āĻ°') > 3āĨ¤
āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦāĻ¨āĻž āĻā§āĻĄ āĻ¨āĻŋāĻŽā§āĻ¨āĻ°ā§āĻĒ:
āĻĒā§āĻ¯āĻžāĻā§āĻ FixedElem_Array;
āĻāĻžāĻ°ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻ ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
TIEARRAY āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢāĻŋāĻ°ā§ āĻāĻļāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¨āĻ¤ā§āĻ¨ āĻ ā§āĻ¯āĻžāĻ°ā§ (āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻāĻŋ āĻŦā§āĻ¨āĻžāĻŽā§ ARRAY āĻ°ā§āĻĢ) āĻšāĻŦā§
āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻļā§āĻ§ā§ āĻāĻĒāĻ¨āĻžāĻā§ āĻĻā§āĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻ¤āĻž āĻāĻ°ā§āĻ¨ āĻ¨āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻāĻāĻŋ ARRAY āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸, āĻāĻŽāĻ°āĻž āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ HASH āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻŦā§āĻā§ āĻ¨ā§āĻŦāĨ¤ āĻāĻāĻāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻāĻžāĻ āĻāĻ°ā§
āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻ°ā§āĻāĻ°ā§āĻĄā§āĻ° āĻ§āĻ°āĻ¨: "{ELEMSIZE}" āĻā§āĻˇā§āĻ¤ā§āĻ° āĻ¸āĻ°ā§āĻŦāĻžāĻ§āĻŋāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻŦā§
āĻāĻāĻžāĻ° āĻ āĻ¨ā§āĻŽā§āĻĻāĻŋāĻ¤, āĻāĻŦāĻ "{ARRAY}" āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻāĻžāĻ°ā§āĻ° ARRAY āĻ°ā§āĻĢ āĻ§āĻ°ā§ āĻ°āĻžāĻāĻŦā§ā§ˇ āĻ¯āĻĻāĻŋ āĻā§āĻ
āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻāĻŋāĻā§ āĻĄāĻŋāĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§ (āĻ¸āĻ¨ā§āĻĻā§āĻš āĻ¨ā§āĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ
ARRAY āĻ°ā§āĻĢ), āĻ¤āĻžāĻ°āĻž āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦā§āĨ¤ āĻāĻ āĻļā§āĻ§ā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ āĻ¸āĻŽā§āĻŽāĻžāĻ¨ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻĻā§āĻāĻžāĻ¤ā§ āĻ¯āĻžāĻ¯āĻŧ
āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻā§āĻĒāĻ¨ā§āĻ¯āĻŧāĻ¤āĻžāĨ¤
āĻ¸āĻžāĻŦ āĻāĻžāĻ¯āĻŧāĻžāĻ°āĻ°ā§ {
āĻāĻŽāĻžāĻ° $āĻā§āĻ˛āĻžāĻ¸ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $elemsize = āĻļāĻŋāĻĢāĻ;
āĻ¯āĻĻāĻŋ ( @_ || $elemsize =~ /\D/ ) {
āĻā§āĻ°āĻžāĻ "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°: āĻāĻžāĻ āĻ ā§āĻ¯āĻžāĻ°ā§, '"āĨ¤ __āĻĒā§āĻ¯āĻžāĻā§āĻ__ "', elem_size";
}
āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢā§āĻ°āĻ¤ {
ELEMSIZE => $elemsize,
āĻ ā§āĻ¯āĻžāĻ°ā§ => [],
}, $class;
}
āĻāĻ, āĻ¸ā§āĻāĻ āĻāĻ¨ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§ āĻšāĻŦā§
āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž (āĻĒāĻĄāĻŧāĻž)āĨ¤ āĻāĻāĻŋ āĻ¤āĻžāĻ° āĻ¸ā§āĻŦ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¨ā§āĻ¯āĻŧ: āĻ¸ā§āĻāĻ āĻ¯āĻžāĻ°
āĻŽāĻžāĻ¨ āĻāĻŽāĻ°āĻž āĻāĻ¨āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ.
āĻ¸āĻžāĻŦ FETCH {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $index = āĻļāĻŋāĻĢāĻ;
āĻĢā§āĻ°āĻ¤ $self->{ARRAY}->[$index];
}
āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĨā§āĻā§ āĻĒāĻĄāĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻ¸ā§āĻāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¸ā§āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻāĻ°āĻž āĻšāĻŦā§
FETCH-āĻ āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻā§ FETCHSIZE āĻāĻ˛ āĻāĻ°ā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāĻ¤āĻŋāĻŦāĻžāĻāĻā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĨ¤ āĻāĻĒāĻ¨āĻŋ
$NEGATIVE_INDICES āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§ āĻāĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻŽāĻžāĻ¨ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°ā§ āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻ¨āĻŋāĻˇā§āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§ āĻā§āĻ˛āĻžāĻ¸ā§āĨ¤
āĻāĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧāĻ¤ā§ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻā§āĻ¨, FETCH āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻ¨āĻžāĻŽ (et al.) āĻ¸āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻ
āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°ā§, āĻ¯āĻĻāĻŋāĻ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ° āĻ¨āĻžāĻŽā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻ°āĻ¯āĻŧā§āĻā§ (TIESCALAR āĻŦāĻ¨āĻžāĻŽ TIEARRAY)āĨ¤ āĻ¯āĻāĻ¨
āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻāĻāĻžāĻŦā§ āĻāĻĒāĻ¨āĻŋ āĻāĻāĻ āĻā§āĻ˛āĻžāĻ¸ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸āĻŋāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻ§āĻ°āĻ¨ā§āĻ°, āĻ āĻ¨ā§āĻļā§āĻ˛āĻ¨ā§ āĻāĻāĻŋ
āĻāĻˇā§āĻāĻāĻ° āĻšāĻ¯āĻŧā§ āĻāĻ ā§, āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋ āĻā§āĻ˛āĻžāĻ¸ā§ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāĻžāĻāĻĒ āĻ āĻ°āĻžāĻāĻž āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻāĨ¤
āĻāĻ, āĻ¸ā§āĻāĻ, āĻŽāĻžāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨
āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§
(āĻ˛āĻŋāĻāĻŋāĻ¤)āĨ¤ āĻāĻāĻŋāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻĻā§āĻāĻŋ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻ˛āĻžāĻā§: āĻāĻŽāĻ°āĻž āĻ¯ā§ āĻ¸ā§āĻāĻā§ āĻāĻāĻŋ
āĻāĻŋāĻā§ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ āĻāĻŦāĻ āĻŽāĻžāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ°āĻžāĻāĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, "undef" āĻšāĻ˛ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ "$self->{ELEMSIZE}" āĻ¸ā§āĻĒā§āĻ¸ āĻ¸āĻāĻā§āĻ¯āĻž āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻā§
āĻāĻāĻžāĻ¨ā§ āĻāĻ°āĻ āĻāĻŋāĻā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§:
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ° {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
my($index, $value) = @_;
āĻ¯āĻĻāĻŋ (āĻĻā§āĻ°ā§āĻā§āĻ¯ $value > $self->{ELEMSIZE} ) {
croak "$value-āĻāĻ° āĻĻā§āĻ°ā§āĻā§āĻ¯ $self->{ELEMSIZE}" āĻĨā§āĻā§ āĻŦā§āĻļāĻŋ;
}
# āĻļā§āĻ¨ā§āĻ¯āĻ¸ā§āĻ¤āĻžāĻ¨ āĻĒā§āĻ°āĻŖ
$self->EXTEND( $index ) āĻ¯āĻĻāĻŋ $index > $self->FETCHSIZE();
# āĻ āĻ§āĻŋāĻāĻžāĻ° āĻā§āĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻĒāĻžāĻĻāĻžāĻ¨ā§āĻ° āĻāĻāĻžāĻ° āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯āĻ¤āĻž
$self->{ARRAY}->[$index] = sprintf "%$self->{ELEMSIZE}s", $value;
}
āĻ¨ā§āĻ¤āĻŋāĻŦāĻžāĻāĻ āĻ¸ā§āĻāĻāĻā§āĻ˛āĻŋāĻā§ FETCH āĻāĻ° āĻŽāĻ¤ā§āĻ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§ˇ
āĻāĻāĻŋ āĻāĻ¨ā§āĻ¨
āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻāĻā§āĻŽā§āĻ° āĻŽā§āĻ āĻ¸āĻāĻā§āĻ¯āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻāĻ.
("āĻ¸ā§āĻā§āĻ¯āĻžāĻ˛āĻžāĻ°(@āĻ ā§āĻ¯āĻžāĻ°ā§)" āĻāĻ° āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯)āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻĢā§āĻāĻ¸āĻžāĻāĻ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻ¸ā§āĻā§āĻ˛āĻžāĻ° @{$self->{ARRAY}};
}
āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨, āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨
āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻāĻā§āĻŽā§āĻ° āĻŽā§āĻ āĻ¸āĻāĻā§āĻ¯āĻž āĻ¸ā§āĻ āĻāĻ°ā§ āĻāĻ āĻšāĻ¤ā§
āĻāĻŖāĻ¨āĻž. āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§āĻāĻŋāĻā§ āĻŦāĻĄāĻŧ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§ āĻ¤āĻŦā§ "undef" āĻāĻ° āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ āĻšāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
āĻ¨āĻ¤ā§āĻ¨ āĻĒāĻĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§āĻā§āĻ¨āĨ¤ āĻ¯āĻĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻā§āĻ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻŖāĻ¨āĻžāĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻ¨ā§āĻā§āĻ°āĻŋ
āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻāĻŋāĻ¤āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, 'undef' āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ "$self->{ELEMSIZE}" āĻ¸āĻāĻā§āĻ¯āĻž āĻ°āĻ¯āĻŧā§āĻā§
āĻ¸ā§āĻĒā§āĻ¸ āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻ¨:
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ°āĻžāĻāĻ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $count = āĻļāĻŋāĻĢāĻ;
āĻ¯āĻĻāĻŋ ( $count > $self->FETCHSIZE() ) {
foreach ( $count - $self->FETCHSIZE() .. $count ) {
$self->STORE( $_, '');
}
} elsif ( $count < $self->FETCHSIZE() ) {
foreach ( 0 .. $self->FETCHSIZE() - $count - 2 ) {
$self->POP();
}
}
}
āĻāĻāĻŋ āĻĒā§āĻ°āĻ¸āĻžāĻ°āĻŋāĻ¤ āĻāĻ°ā§āĻ¨, āĻāĻŖāĻ¨āĻž āĻāĻ°ā§āĻ¨
āĻ¤āĻĨā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻāĻ˛ āĻ¯ā§ āĻ ā§āĻ¯āĻžāĻ°ā§ āĻāĻā§ āĻŦāĻžāĻĄāĻŧāĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻāĻŖāĻ¨āĻž āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ āĻāĻŋāĻā§āĻ āĻāĻ°āĻžāĻ° āĻĻāĻ°āĻāĻžāĻ° āĻ¨ā§āĻāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ āĻ¯ā§ āĻā§āĻ¨ āĻĢāĻžāĻāĻāĻž ("undef") āĻāĻ¨ā§āĻā§āĻ°āĻŋ āĻ¨ā§āĻ, āĻ¤āĻžāĻ "EXTEND"
āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ "STORESIZE" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§:
āĻ¸āĻžāĻŦ āĻāĻā§āĻ¸āĻā§āĻ¨āĻĄ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $count = āĻļāĻŋāĻĢāĻ;
$self->STORESIZE( $count);
}
āĻāĻ, āĻā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨
āĻ¸ā§āĻā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻ¯āĻžāĻāĻžāĻ āĻāĻ°ā§āĻ¨ āĻāĻžāĻŦāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻ.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻŦ āĻ¯ā§ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯āĻĻāĻŋ "$self->{ELEMSIZE}" āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ āĻŋāĻ¤ āĻšāĻ¯āĻŧ
āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻĒā§āĻ¸, āĻāĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§āĻ:
āĻāĻĒ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $index = āĻļāĻŋāĻĢāĻ;
āĻ¯āĻĻāĻŋ 0 āĻĢā§āĻ°āĻ¤ āĻĻāĻžāĻ! āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ $self->{ARRAY}->[$index] ||
$self->{ARRAY}->[$index] eq ' ' x $self->{ELEMSIZE};
āĻĢāĻŋāĻ°ā§ 1;
}
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¨, āĻā§
āĻ¸ā§āĻā§āĻ¤ā§ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻŽā§āĻā§āĻ¨ āĻāĻžāĻŦāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĨā§āĻā§ āĻāĻ.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻāĻā§āĻŽ āĻšāĻ˛ "$self->{ELEMSIZE}" āĻ¸ā§āĻĒā§āĻ¸:
āĻ¸āĻžāĻŦ DELETE {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $index = āĻļāĻŋāĻĢāĻ;
āĻĢā§āĻ°āĻ¤ $self->STORE( $index, '');
}
āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨
āĻ āĻŦāĻā§āĻā§āĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻŦāĻžāĻāĻ§āĻž āĻ ā§āĻ¯āĻžāĻ°ā§ āĻĨā§āĻā§ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽāĻžāĻ¨ āĻ¸āĻžāĻĢ āĻāĻ°ā§āĻ¨ (āĻ¸āĻ°āĻžāĻ¨, āĻŽā§āĻā§āĻ¨, ...)
āĻāĻāĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ° {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻĢā§āĻ°āĻ¤ $self->{ARRAY} = [];
}
āĻāĻ āĻ§āĻžāĻā§āĻāĻž, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻ§āĻžāĻā§āĻāĻž {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° @āĻ¤āĻžāĻ˛āĻŋāĻāĻž = @_;
āĻāĻŽāĻžāĻ° $last = $self->FETCHSIZE();
$self->STORE( $last + $_, $list[$_] ) foreach 0 .. $#list;
āĻĢā§āĻ°āĻ¤ $self->FETCHSIZE();
}
āĻāĻ POP
āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻļā§āĻˇ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻ¸āĻ°āĻžāĻ¨ āĻāĻŦāĻ āĻāĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¨āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ POP {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻĒāĻĒ @{$self->{ARRAY}};
}
āĻāĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨
āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻ¸āĻ°āĻžāĻ¨ (āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻ¨āĻŋāĻā§ āĻ¨āĻžāĻŽāĻŋāĻ¯āĻŧā§) āĻāĻŦāĻ āĻāĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¨āĨ¤
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻļāĻŋāĻĢāĻ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻļāĻŋāĻĢāĻ @{$self->{ARRAY}};
}
āĻāĻ, āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ¨āĻļāĻŋāĻĢāĻ
āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻļā§āĻ°ā§āĻ¤ā§ LIST āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§āĻļ āĻāĻ°ā§āĻ¨, āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻā§āĻ˛āĻŋāĻā§ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻ°āĻžāĻ¨ā§ˇ
āĻāĻžāĻŽāĻ°āĻž āĻ¤ā§āĻ°āĻŋ. āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻ¸āĻžāĻŦ āĻāĻ¨āĻļāĻŋāĻĢāĻ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° @āĻ¤āĻžāĻ˛āĻŋāĻāĻž = @_;
āĻāĻŽāĻžāĻ° $size = āĻ¸ā§āĻā§āĻ˛āĻžāĻ° (@list);
# āĻāĻŽāĻžāĻĻā§āĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻžāĻ¯āĻŧāĻāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻ¨
@{$self->{ARRAY}}[ $size .. $#{$self->{ARRAY}} + $size ]
= @{$self->{ARRAY}};
$self->STORE( $_, $list[$_] ) foreach 0 .. $#list;
}
āĻāĻ, āĻ āĻĢāĻ¸ā§āĻ, āĻĻā§āĻ°ā§āĻā§āĻ¯, āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸ā§āĻĒā§āĻ˛āĻžāĻāĻ¸ āĻāĻ°ā§āĻ¨
āĻ ā§āĻ¯āĻžāĻ°ā§āĻ¤ā§ "āĻ¸ā§āĻĒā§āĻ˛āĻŋāĻ¸" āĻāĻ° āĻ¸āĻŽāĻ¤ā§āĻ˛ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻ°ā§āĻ¨āĨ¤
āĻ āĻĢāĻ¸ā§āĻ āĻāĻā§āĻāĻŋāĻ āĻāĻŦāĻ āĻĄāĻŋāĻĢāĻ˛ā§āĻ āĻļā§āĻ¨ā§āĻ¯, āĻāĻŖāĻžāĻ¤ā§āĻŽāĻ āĻŽāĻžāĻ¨ āĻļā§āĻˇ āĻĨā§āĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻŖāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻ ā§āĻ¯āĻžāĻ°ā§āĨ¤
āĻ˛āĻŽā§āĻŦāĻž āĻāĻā§āĻāĻŋāĻ āĻāĻŦāĻ āĻŦāĻžāĻāĻŋ āĻ ā§āĻ¯āĻžāĻ°ā§āĻ° āĻĄāĻŋāĻĢāĻ˛ā§āĻāĨ¤
āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻžāĻ˛āĻŋ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻ¸āĻ˛āĻāĻŋāĻ° āĻāĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§ āĻ˛āĻŽā§āĻŦāĻž āĻ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ āĻĢāĻ¸ā§āĻ.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻā§āĻ āĻļāĻ°ā§āĻāĻāĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦ āĻ¯āĻĻāĻŋ āĻāĻāĻāĻŋ āĻĨāĻžāĻā§ āĻ¤āĻžāĻ˛āĻŋāĻāĻž:
āĻ¸āĻžāĻŦ āĻ¸ā§āĻĒā§āĻ˛āĻŋāĻ¸ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻ āĻĢāĻ¸ā§āĻ = āĻļāĻŋāĻĢāĻ || 0;
āĻāĻŽāĻžāĻ° $āĻĻā§āĻ°ā§āĻā§āĻ¯ = āĻļāĻŋāĻĢāĻ || $self->FETCHSIZE() - $offset;
āĻāĻŽāĻžāĻ° @āĻ¤āĻžāĻ˛āĻŋāĻāĻž = ();
āĻ¯āĻĻāĻŋ ( @_ ) {
āĻāĻžāĻ @list, __PACKAGE__, $self->{ELEMSIZE};
@āĻ¤āĻžāĻ˛āĻŋāĻāĻž = @_;
}
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻ¸ā§āĻĒā§āĻ˛āĻžāĻāĻ¸ @{$self->{ARRAY}}, $offset, $length, @list;
}
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
"āĻāĻ¨āĻāĻŋ" āĻāĻāĻ˛ā§ āĻĄāĻžāĻāĻž āĻšāĻŦā§āĨ¤ (āĻ¨ā§āĻā§ "āĻĻā§āĻ¯ "āĻāĻ¨āĻāĻŋ" āĻā§āĻāĻāĻž" āĻĻā§āĻā§āĻ¨āĨ¤)
āĻāĻ āĻ§ā§āĻŦāĻāĻ¸
āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋāĻā§ āĻ§ā§āĻŦāĻāĻ¸ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§ āĻ¤āĻāĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻ¸āĻā§āĻā§
āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻāĻžāĻ āĻā§āĻ˛āĻžāĻ¸, āĻāĻāĻŋāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻāĻžāĻˇāĻžāĻ¤ā§ āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻž
āĻāĻŦāĻ°ā§āĻāĻ¨āĻž āĻ¸āĻāĻā§āĻ°āĻš, āĻ¤āĻžāĻ āĻāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻā§āĻĄāĻŧā§ āĻĻā§āĻŦāĨ¤
tying āĻšā§āĻ¯āĻžāĻļ
āĻšā§āĻ¯āĻžāĻļ āĻāĻŋāĻ˛ āĻĒā§āĻ°āĻĨāĻŽ āĻĒāĻžāĻ°ā§āĻ˛ āĻĄā§āĻāĻž āĻāĻžāĻāĻĒ āĻ¯āĻž āĻŦāĻžāĻāĻ§āĻž āĻāĻŋāĻ˛ (āĻĻā§āĻā§āĻ¨ dbmopen()) āĻāĻāĻāĻŋ āĻļā§āĻ°ā§āĻŖā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ a
tied āĻšā§āĻ¯āĻžāĻļ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤: TIEHASH āĻšāĻ˛ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°āĨ¤ FETCH āĻāĻŦāĻ
STORE āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻā§ āĻāĻŦāĻ āĻŽāĻžāĻ¨ āĻā§āĻĄāĻŧāĻžāĨ¤ EXISTS āĻ°āĻŋāĻĒā§āĻ°ā§āĻ āĻāĻ°ā§ āĻ¯ā§ āĻāĻāĻāĻŋ āĻā§ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻāĻā§ āĻāĻŋāĻ¨āĻžā§ˇ
āĻšā§āĻ¯āĻžāĻļ, āĻāĻŦāĻ DELETE āĻāĻāĻāĻŋ āĻŽā§āĻā§ āĻĻā§āĻ¯āĻŧāĨ¤ CLEAR āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻā§ āĻāĻŦāĻ āĻŽāĻžāĻ¨ āĻŽā§āĻā§ āĻšā§āĻ¯āĻžāĻļ āĻāĻžāĻ˛āĻŋ āĻāĻ°ā§
āĻā§āĻĄāĻŧāĻž FIRSTKEY āĻāĻŦāĻ NEXTKEY āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻ¨ āĻā§() āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻ¸āĻŦ āĻāĻĒāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻĢāĻžāĻāĻļāĻ¨
āĻāĻžāĻŦāĻŋāĻ¸āĻŽā§āĻš. āĻ¸ā§āĻāĻ˛āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻˇāĻžāĻĒāĻā§ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļ āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻšāĻ˛ā§ SCALAR āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧāĨ¤ UNTIE āĻšāĻ˛
āĻ¯āĻāĻ¨ "āĻāĻ¨āĻāĻŋ" āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛āĻāĻŋ āĻāĻžāĻ°āĻŦā§āĻ āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻ¤āĻžāĻā§ āĻĄā§āĻ¸āĻā§āĻ°āĻ¯āĻŧ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ
āĻ¸āĻāĻā§āĻšā§āĻ¤
āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻ āĻ¨ā§āĻā§āĻ° āĻŽāĻ¤ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻŦāĻŋāĻ§āĻžāĻ¯āĻŧ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻāĻžāĻ::StdHash āĻĨā§āĻā§ āĻāĻ¤ā§āĻ¤āĻ°āĻžāĻ§āĻŋāĻāĻžāĻ°ā§ āĻšāĻ¨
āĻāĻĒāĻ¨āĻžāĻ° āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻŽāĻĄāĻŋāĻāĻ˛, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧāĻā§āĻ˛āĻŋāĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§āĨ¤ āĻāĻžāĻ::āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻšā§āĻ¯āĻžāĻļ āĻĻā§āĻā§āĻ¨
āĻŦāĻŋāĻŦāĻ°āĻŖāĨ¤
āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻ˛ āĻšā§āĻ¯āĻžāĻļā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§āĻ āĻāĻŽāĻ¨ āĻāĻāĻāĻŋ āĻā§ āĻāĻŦāĻ āĻā§-āĻāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒāĻžāĻ°ā§āĻĨāĻā§āĻ¯ āĻāĻ°ā§
āĻšā§āĻ¯āĻžāĻļā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻŋāĻ¨ā§āĻ¤ā§ "undef" āĻāĻ° āĻ āĻ¨ā§āĻ°ā§āĻĒ āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤ āĻĻā§āĻāĻŋ āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž
"exists()" āĻāĻŦāĻ "defined()" āĻĢāĻžāĻāĻļāĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻŋāĻā§āĻāĻž āĻāĻāĻ°ā§āĻˇāĻŖā§āĻ¯āĻŧ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ: āĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻĻā§āĻ¯āĻŧ
āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĄāĻ āĻĢāĻžāĻāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ. āĻāĻĒāĻ¨āĻŋ āĻ¨āĻžāĻŽā§āĻ° āĻ¸āĻžāĻĨā§ āĻšā§āĻ¯āĻžāĻļā§ āĻ¸ā§āĻāĻ āĻāĻ°ā§āĻ¨
āĻĢāĻžāĻāĻ˛ (āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻŦāĻŋāĻ¯āĻŧā§āĻ) āĻāĻŦāĻ āĻāĻĒāĻ¨āĻŋ āĻ¸ā§āĻ āĻĄāĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻĢāĻŋāĻ°ā§ āĻĒāĻžāĻŦā§āĻ¨āĨ¤ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻŦāĻ°ā§āĻĒ:
āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻžāĻ %dot, 'DotFiles';
āĻ¯āĻĻāĻŋ ( $dot{profile} =~ /MANPATH/ ||
$dot{login} =~ /MANPATH/ ||
$dot{cshrc} =~ /MANPATH/ )
{
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ "āĻāĻĒāĻ¨āĻŋ āĻāĻĒāĻ¨āĻžāĻ° MANPATH āĻ¸ā§āĻ āĻāĻ°āĻā§āĻ¨ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§\n";
}
āĻ āĻĨāĻŦāĻž āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻžāĻāĻ§āĻž āĻā§āĻ˛āĻžāĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻ¨āĻŽā§āĻ¨āĻž āĻāĻā§:
% him, 'DotFiles', 'deemon' āĻāĻžāĻ;
foreach $f ( āĻā§ % āĻ¤āĻžāĻā§ ) {
printf "āĻĄā§āĻŽāĻ¨ āĻĄāĻ āĻĢāĻžāĻāĻ˛ %s āĻāĻāĻžāĻ° %d\n",
$f, āĻĻā§āĻ°ā§āĻā§āĻ¯ $hi{$f};
}
āĻāĻŽāĻžāĻĻā§āĻ° āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļ āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻŦā§āĻļ āĻāĻ¯āĻŧā§āĻāĻāĻŋ āĻ§āĻžāĻ°āĻŖāĻāĻžāĻ°ā§ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻšā§āĻ¯āĻžāĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ
āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ āĻā§āĻˇā§āĻ¤ā§āĻ°, āĻ¯āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "{LIST}" āĻā§āĻˇā§āĻ¤ā§āĻ°āĻāĻŋāĻ āĻšāĻŦā§ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻŽāĻ¨ā§ āĻāĻ°ā§
āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻšā§āĻ¯āĻžāĻļ
USER āĻ¯āĻžāĻ° āĻĄāĻ āĻĢāĻžāĻāĻ˛ āĻāĻ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻāĻ°ā§
āĻšā§āĻŽ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻ āĻĄāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĨāĻžāĻā§ā§ˇ
āĻā§āĻ˛ā§āĻŦāĻžāĻ°
āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸ā§āĻ āĻĄāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻŦāĻž āĻ¸āĻ°āĻžāĻ¨ā§āĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻāĻāĻŋāĻ¤ āĻāĻŋāĻ¨āĻž
āĻĄāĻ āĻĢāĻžāĻāĻ˛ā§āĻ° āĻ¨āĻžāĻŽ āĻāĻŦāĻ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŦāĻ¸ā§āĻ¤ā§ āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻāĻ¯āĻŧā§āĻ° āĻšā§āĻ¯āĻžāĻļ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
āĻāĻāĻžāĻ¨ā§ āĻļā§āĻ°ā§ Dotfiles.pm:
āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸;
āĻāĻžāĻ°ā§āĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻ¸āĻžāĻŦ āĻšā§āĻāĻ¯āĻŧāĻžāĻ¸āĻŋ {(āĻāĻšā§āĻŦāĻžāĻ¨āĻāĻžāĻ°ā§(1))[3]āĨ¤ '()'}
āĻāĻŽāĻžāĻ° $DEBUG = 0;
āĻ¸āĻžāĻŦ āĻĄāĻŋāĻŦāĻžāĻ { $DEBUG = @_? āĻļāĻŋāĻĢāĻ : 1}
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻā§āĻ°ā§āĻ¸āĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻ¤āĻĨā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻāĻ¤ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻ¤ā§ āĻāĻžāĻ
āĻāĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻāĻā§ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻĢāĻžāĻāĻļāĻ¨āĻ āĻ°āĻžāĻāĻŋ
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻšā§āĻāĻ¯āĻŧāĻžāĻ¸āĻŋ() āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻ¨āĻžāĻŽ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧ āĻ¯āĻž āĻāĻāĻŋāĻā§ āĻāĻ˛ āĻāĻ°ā§āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļā§āĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
TIEHASH āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢāĻŋāĻ°ā§ āĻāĻļāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻ¯āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ¨āĻ¤ā§āĻ¨ āĻŦāĻ¸ā§āĻ¤ā§ (āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ āĻāĻ¤ā§āĻ¯āĻž āĻāĻāĻāĻŋ āĻŦā§āĻ¨āĻžāĻŽā§ āĻ¨āĻ¯āĻŧ
āĻšā§āĻ¯āĻžāĻļ) āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻāĻžāĻ¨ā§ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°:
āĻ¸āĻžāĻŦ āĻāĻŋāĻšāĻžāĻļ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $user = āĻļāĻŋāĻĢāĻ || $>;
āĻāĻŽāĻžāĻ° $dotdir = āĻļāĻŋāĻĢāĻ || '';
croak "āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°: @{[&whowasi]} [USER [DOTDIR]]" āĻ¯āĻĻāĻŋ @_;
$user = getpwuid($user) āĻ¯āĻĻāĻŋ $user =~ /^\d+$/;
āĻāĻŽāĻžāĻ° $dir = (getpwnam($user))[7]
|| āĻā§āĻ°ā§āĻ "@{[&whowasi]}: āĻā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¨ā§āĻ $user";
$dir .="/$dotdir" āĻ¯āĻĻāĻŋ $dotdir;
āĻāĻŽāĻžāĻ° $āĻ¨ā§āĻĄ = {
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ => $āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§,
āĻŦāĻžāĻĄāĻŧāĻŋ => $dir,
āĻ¤āĻžāĻ˛āĻŋāĻāĻž => {},
āĻā§āĻ˛ā§āĻŦāĻžāĻ° => 0,
};
opendir(DIR, $dir)
|| āĻā§āĻ°āĻžāĻ "@{[&whowasi]}: $dir: $!" āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž;
foreach $dot ( grep /^\./ && -f "$dir/$_", readdir(DIR)) {
$dot =~ s/^\.//;
$node->{LIST}{$dot} = undef;
}
āĻŦāĻ¨ā§āĻ§ āĻĄāĻŋāĻāĻāĻāĻ°;
āĻĢāĻŋāĻ°ā§ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ $node, $self;
}
āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻžāĻ° āĻŽāĻ¤ā§ āĻ¯ā§ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻĢāĻžāĻāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻā§āĻ¨
āĻāĻāĻāĻŋ readdir āĻāĻ°, āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻļā§āĻ¨ā§ āĻĨāĻžāĻāĻž āĻĄāĻŋāĻ°ā§āĻā§āĻāĻ°āĻŋāĻāĻŋ āĻāĻ°āĻ āĻāĻžāĻ˛āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻŋāĻĒā§āĻ¨ā§āĻĄ āĻāĻ°āĻŦā§āĻ¨āĨ¤ āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ, āĻāĻžāĻ°āĻŖ āĻāĻŽāĻ°āĻž
āĻāĻ°ā§āĻ¨āĻŋ chdir() āĻ¸ā§āĻāĻžāĻ¨ā§, āĻāĻāĻž āĻā§āĻ˛ āĻĢāĻžāĻāĻ˛ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻž āĻšāĻŦā§.
āĻāĻ, āĻā§ āĻāĻ¨ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻ¤āĻŦāĻžāĻ° āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļā§āĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻŦā§
(āĻĒāĻĄāĻŧā§āĻ¨)āĨ¤ āĻāĻāĻŋ āĻ¤āĻžāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻāĻāĻŋ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¨ā§āĻ¯āĻŧ: āĻā§ āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ āĻāĻŽāĻ°āĻž
āĻāĻ¨āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋāĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻžāĻ¨ā§ āĻāĻ¨āĻž āĻšāĻ˛āĨ¤
āĻ¸āĻžāĻŦ FETCH {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻĄāĻ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $dir = $self->{HOME};
my $file = "$dir/.$dot";
āĻ¯āĻĻāĻŋ āĻ¨āĻž ($self->{LIST}->{$dot} || -f $file āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§) {
carp "@{[&whowasi]}: $Dot āĻĢāĻžāĻāĻ˛ āĻ¨ā§āĻ" āĻ¯āĻĻāĻŋ $DEBUG;
undef āĻĢā§āĻ°āĻ¤;
}
āĻ¯āĻĻāĻŋ (āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ $self->{LIST}->{$dot}) {
āĻĢā§āĻ°āĻ¤ $self->{LIST}->{$dot};
} āĻ āĻ¨ā§āĻ¯ {
āĻĢā§āĻ°āĻ¤ $self->{LIST}->{$dot} = `cat $dir/.$dot`;
}
}
āĻāĻāĻŋāĻā§ āĻāĻāĻ¨āĻŋāĻā§āĻ¸ āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ˛ā§āĻāĻž āĻ¸āĻšāĻ āĻāĻŋāĻ˛ āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛(1) āĻāĻŽāĻžāĻ¨ā§āĻĄ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻž āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻšāĻŦā§
āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻā§āĻ˛āĻ¤ā§ āĻāĻ°āĻ āĻĒā§āĻ°ā§āĻā§āĻŦāĻ˛ āĻšāĻ¤ā§ āĻšāĻŦā§ (āĻāĻŦāĻ āĻāĻŋāĻā§āĻāĻž āĻŦā§āĻļāĻŋ āĻĻāĻā§āĻˇ)āĨ¤ āĻ āĻŦāĻļā§āĻ¯āĻ,
āĻāĻžāĻ°āĻŖ āĻĄāĻ āĻĢāĻžāĻāĻ˛āĻā§āĻ˛āĻŋ āĻāĻāĻāĻŋ āĻāĻāĻ¨āĻŋāĻā§āĻ¸āĻŋ āĻ§āĻžāĻ°āĻŖāĻž, āĻāĻŽāĻ°āĻž āĻāĻ¤ā§ āĻāĻĻā§āĻŦāĻŋāĻā§āĻ¨ āĻ¨āĻāĨ¤
āĻāĻ, āĻā§, āĻŽāĻžāĻ¨ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļā§āĻ° āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸ā§āĻ āĻāĻ°āĻž āĻšāĻŦā§ (āĻ˛āĻŋāĻāĻŋāĻ¤)āĨ¤
āĻāĻāĻŋāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻĻā§āĻāĻŋ āĻāĻ°ā§āĻā§āĻŽā§āĻ¨ā§āĻ āĻ˛āĻžāĻā§: āĻ¯ā§ āĻ¸ā§āĻāĻā§ āĻāĻŽāĻ°āĻž āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ
āĻāĻŋāĻā§ āĻ¸āĻā§āĻāĻ¯āĻŧ āĻāĻ°ā§āĻ¨, āĻāĻŦāĻ āĻŽāĻžāĻ¨ āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻāĻŋ.
āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻĄāĻāĻĢāĻžāĻāĻ˛āĻ¸ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻ¸āĻ¤āĻ°ā§āĻ āĻĨāĻžāĻāĻŦ āĻ¯āĻžāĻ¤ā§ āĻ¤āĻžāĻ°āĻž āĻāĻāĻžāĻ°āĻ°āĻžāĻāĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻ¨āĻž āĻāĻ°ā§
āĻĢāĻžāĻāĻ˛ āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻ¤āĻžāĻ°āĻž āĻāĻ˛ āĻāĻ°ā§ āĻā§āĻ˛ā§āĻŦāĻžāĻ°() āĻŽā§āĻ˛ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ
āĻĻā§āĻŦāĻžāĻ°āĻž āĻĢāĻŋāĻ°ā§ āĻāĻžāĻ().
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ° {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻĄāĻ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻŽāĻžāĻ¨ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $file = $self->{HOME}āĨ¤ "/.$āĻĄāĻ";
āĻāĻŽāĻžāĻ° $user = $self->{USER};
āĻā§āĻ°āĻžāĻ "@{[&whowasi]}: $file āĻ¨āĻ āĻā§āĻ˛ā§āĻŦāĻžāĻ°ā§āĻŦāĻ˛"
āĻ¯āĻĻāĻŋ āĻ¨āĻž $self->{CLOBBER};
open(my $f, '>', $file) || croak "$file āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž: $!";
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ $f $value;
āĻŦāĻ¨ā§āĻ§ ($f);
}
āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ°āĻž āĻāĻŋāĻā§ āĻā§āĻ˛ā§āĻŦāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻž āĻŦāĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§:
$ob = āĻāĻžāĻ %āĻĄā§āĻŽāĻ¨_āĻĄāĻāĻ¸, 'āĻĄā§āĻŽāĻ¨';
$ob->āĻā§āĻ˛ā§āĻŦāĻžāĻ°(ā§¨ā§Ļā§§ā§§);
$daemon_dots{signature} = "āĻāĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻāĻžāĻ°ā§āĻ° āĻĄā§āĻŽāĻ¨\n";
āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§ āĻšāĻžāĻ¤ āĻ°āĻžāĻāĻžāĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻāĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻŦāĻžāĻāĻ§āĻž()
āĻĢāĻžāĻāĻļāĻ¨, āĻ¤āĻžāĻ āĻ¤āĻžāĻ°āĻž āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻā§āĻ˛ā§āĻŦāĻžāĻ° āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻāĻžāĻ %āĻĄā§āĻŽāĻ¨_āĻĄāĻāĻ¸, 'āĻĄā§āĻŽāĻ¨';
āĻŦāĻžāĻāĻ§āĻž (%āĻĄā§āĻŽāĻ¨_āĻĄāĻ)->āĻā§āĻ˛ā§āĻŦāĻžāĻ°(ā§¨ā§Ļā§§ā§§);
āĻā§āĻ˛ā§āĻŦāĻžāĻ° āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§:
āĻ¸āĻžāĻŦ āĻā§āĻ˛ā§āĻŦāĻžāĻ° {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
$self->{CLOBBER} = @_? āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°: 1;
}
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¨, āĻā§
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻšā§āĻ¯āĻžāĻļ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĢā§āĻ˛āĻŋ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§
āĻĻā§āĻ¯ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž() āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻžāĻ°, āĻ¤āĻžāĻ°āĻž āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻāĻžāĻ¯āĻŧ āĻāĻŋāĻ¨āĻž āĻ¤āĻž āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻ°āĻž āĻ¸āĻ¤āĻ°ā§āĻ āĻĨāĻžāĻāĻŦ
āĻā§āĻ˛ā§āĻŦāĻžāĻ° āĻĢāĻžāĻāĻ˛āĨ¤
āĻ¸āĻžāĻŦ DELETE {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻĄāĻ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $file = $self->{HOME}āĨ¤ "/.$āĻĄāĻ";
āĻā§āĻ°ā§āĻ "@{[&whowasi]}: āĻĢāĻžāĻāĻ˛ $file āĻ¸āĻ°āĻŋāĻ¯āĻŧā§ āĻĻā§āĻŦā§ āĻ¨āĻž"
āĻ¯āĻĻāĻŋ āĻ¨āĻž $self->{CLOBBER};
$self->{LIST}->{$dot} āĻŽā§āĻā§āĻ¨;
āĻāĻŽāĻžāĻ° $success = unlink($file);
carp "@{[&whowasi]}: $file: $" āĻāĻ¨āĻ˛āĻŋāĻā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻŦā§ āĻ¨āĻž! $success āĻ¨āĻž āĻšāĻ˛ā§;
$āĻ¸āĻĢāĻ˛āĻ¤āĻž;
}
DELETE āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻŽāĻžāĻ¨āĻāĻŋ āĻāĻ˛ā§āĻ° āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧā§ˇ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž()āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ
āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻāĻāĻ°āĻŖ āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž(), āĻāĻĒāĻ¨āĻŋ āĻ¯āĻžāĻ āĻšā§āĻ āĻ¨āĻž āĻā§āĻ¨ FETCH āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤
āĻāĻ āĻāĻžāĻŦāĻŋ āĻāĻ¨ā§āĻ¯ āĻĢāĻŋāĻ°ā§ āĻšāĻŦā§. āĻāĻ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ āĻŦā§āĻā§ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ
āĻŽāĻžāĻ¨ āĻ¯āĻž āĻāĻ˛āĻāĻžāĻ°ā§āĻā§ āĻŦāĻ˛ā§ āĻ¯ā§ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¸āĻĢāĻ˛āĻāĻžāĻŦā§ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻāĻŋāĻ¨āĻžāĨ¤
āĻāĻāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻĒā§āĻ°ā§ āĻšā§āĻ¯āĻžāĻļāĻāĻŋ āĻ¸āĻžāĻĢ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ ā§āĻ¯āĻžāĻ¸āĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§
āĻāĻāĻž āĻāĻžāĻ˛āĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻĄāĻ āĻĢāĻžāĻāĻ˛ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻŦā§! āĻāĻāĻž āĻ¯ā§āĻŽāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻŋāĻĒāĻā§āĻāĻ¨āĻ
āĻāĻāĻŋ āĻāĻāĻ¤ā§ āĻ¤āĻžāĻĻā§āĻ° 1 āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻŦā§āĻļāĻŋ āĻāĻŋāĻā§āĻ¤ā§ CLOBBER āĻ¸ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ¸āĻžāĻŦ āĻā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ° {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻā§āĻ°ā§āĻ "@{[&whowasi]}: $self->{USER}" āĻāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĄāĻ āĻĢāĻžāĻāĻ˛ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻŦā§ āĻ¨āĻž
āĻ¯āĻĻāĻŋ āĻ¨āĻž $self->{CLOBBER} > 1;
āĻāĻŽāĻžāĻ° $āĻĄāĻ;
foreach $dot ( āĻā§ %{$self->{LIST}}) {
$self->DELETE($dot);
}
}
āĻāĻ, āĻā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨
āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻ¯āĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¤āĻāĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻšāĻ¯āĻŧ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨() āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻĒāĻ° āĻĢāĻžāĻāĻļāĻ¨
āĻšā§āĻ¯āĻžāĻļ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻāĻŽāĻ°āĻž āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ "{LIST}" āĻšā§āĻ¯āĻžāĻļ āĻāĻĒāĻžāĻĻāĻžāĻ¨āĻāĻŋ āĻĻā§āĻāĻŦ:
āĻāĻĒ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻĄāĻ = āĻļāĻŋāĻĢāĻ;
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ $self->{LIST}->{$dot};
}
āĻĒā§āĻ°āĻĨāĻŽ āĻāĻ
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§ āĻšā§āĻ¯āĻžāĻļā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻā§āĻ¨, āĻ¯ā§āĻŽāĻ¨
āĻāĻāĻāĻŋ āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻā§(), āĻŽāĻžāĻ¨ (), āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻāĻ˛
āĻ¸āĻžāĻŦ āĻĢāĻžāĻ°ā§āĻ¸ā§āĻāĻāĻŋ {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $a = āĻā§ %{$self->{LIST}}; # āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻāĻžāĻ°ā§ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ %{$self->{LIST}}
}
FIRSTKEY āĻā§ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻˇāĻžāĻĒāĻā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻĒā§āĻ°āĻĨāĻŽ āĻā§āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤
āĻŽāĻžāĻ¨ (), āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻ¸āĻā§āĻā§, āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ FETCH āĻāĻ˛ āĻāĻ°āĻŦā§āĨ¤
āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻāĻ, āĻļā§āĻˇ āĻā§
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻāĻāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻĒāĻžāĻ¯āĻŧ āĻā§(), āĻŽāĻžāĻ¨ (), āĻŦāĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻāĻžāĻ° āĻāĻā§ āĻāĻāĻāĻŋ
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¯ā§āĻā§āĻ¤āĻŋ āĻ¯āĻž āĻļā§āĻˇ āĻā§ āĻ¯ā§āĻāĻŋ āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻ āĻ¯āĻĻāĻŋ āĻĻāĻ°āĻāĻžāĻ°ā§
āĻāĻĒāĻ¨āĻŋ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸ āĻĨā§āĻā§ āĻāĻāĻžāĻ°ā§āĻāĻ°āĻā§ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻŦāĻž āĻāĻ˛ āĻāĻ°āĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§ āĻ¯āĻ¤ā§āĻ¨āĻļā§āĻ˛, āĻŦāĻž
āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻā§āĻĨāĻžāĻ āĻāĻāĻāĻŋ āĻšā§āĻ¯āĻžāĻļ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻ¨āĻž.
NEXTKEY āĻā§ āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻˇāĻžāĻĒāĻā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻāĻŋ āĻā§āĻŦāĻ˛ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻā§āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻŦā§āĨ¤
āĻŽāĻžāĻ¨ (), āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻ¸āĻā§āĻā§, āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻā§āĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ FETCH āĻāĻ˛ āĻāĻ°āĻŦā§āĨ¤
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯, āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻšā§āĻ¯āĻžāĻļ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻāĻŋ āĻ¤āĻžāĻ āĻāĻŽāĻ°āĻž āĻļā§āĻ§ā§ āĻ¸āĻšāĻ āĻāĻŋāĻ¨āĻŋāĻ¸ āĻāĻ°āĻŦ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻ°āĻŦ
āĻĒāĻ°ā§āĻā§āĻˇāĻāĻžāĻŦā§ LIST āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§ āĻ¯ā§āĻ¤ā§ āĻšāĻŦā§āĨ¤
āĻ¸āĻžāĻŦ āĻ¨ā§āĻā§āĻ¸āĻāĻāĻŋ {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ %{ $self->{LIST} } āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¨
}
āĻāĻ āĻ¸ā§āĻāĻ˛āĻžāĻ°
āĻāĻāĻŋāĻā§ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻšā§āĻ¯āĻžāĻļāĻā§ āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻĒā§āĻ°āĻ¸āĻā§āĻā§ āĻŽā§āĻ˛ā§āĻ¯āĻžāĻ¯āĻŧāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯
untied āĻšā§āĻ¯āĻžāĻļ āĻāĻāĻ°āĻŖ, āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻāĻāĻŋ āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻŽāĻžāĻ¨ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļ
āĻāĻžāĻ˛āĻŋ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨āĻž āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻĒāĻžāĻ°ā§āĻ˛ āĻāĻŋāĻā§ āĻļāĻŋāĻā§āĻˇāĻŋāĻ¤ āĻāĻ°ā§ āĻ¤ā§āĻ˛āĻŦā§
āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°ā§ āĻāĻŦāĻ āĻ¸āĻ¤ā§āĻ¯ āĻĢāĻŋāĻ°ā§ āĻāĻ¸ā§ āĻ¯āĻāĻ¨ āĻšā§āĻ¯āĻžāĻļ āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻ° āĻāĻŋāĻ¤āĻ°ā§ āĻĨāĻžāĻā§āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻ¨āĻž āĻšāĻ¯āĻŧ,
FIRSTKEY āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻāĻŦāĻ FIRSTKEY āĻāĻžāĻ˛āĻŋ āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ˛ā§ āĻĢāĻ˛āĻžāĻĢāĻ˛āĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻŋāĻĨā§āĻ¯āĻž āĻŽāĻžāĻ¨ āĻšāĻŦā§
āĻ¤āĻžāĻ˛āĻŋāĻāĻž, āĻ āĻ¨ā§āĻ¯āĻĨāĻžāĻ¯āĻŧ āĻ¸āĻ¤ā§āĻ¯āĨ¤
āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋāĻ¤ āĻ¨āĻž āĻ āĻ¨ā§āĻ§āĻāĻžāĻŦā§ āĻĒāĻžāĻ°ā§āĻ˛ā§āĻ° āĻāĻĒāĻ° āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ āĻŋāĻ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋ āĻāĻ°āĻžāĻ° āĻāĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§āĻ¨āĨ¤
āĻŦāĻŋāĻļā§āĻˇ āĻāĻ°ā§, āĻāĻĒāĻ¨āĻŋ āĻŦāĻžāĻ°āĻŦāĻžāĻ° āĻšā§āĻ¯āĻžāĻļ āĻ¸āĻžāĻĢ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻžāĻ°ā§āĻ˛ āĻā§āĻ˛āĻāĻžāĻŦā§ āĻ¸āĻ¤ā§āĻ¯ā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻŦā§
āĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ DELETE āĻāĻ˛ āĻāĻ°āĻž āĻšāĻā§āĻā§āĨ¤ āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻāĻ¸ā§āĻŦ SCALAR āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻā§āĻā§
āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯āĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻā§āĻŦāĻžāĻ°ā§ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻšāĻ¤ā§ āĻāĻžāĻ¨ āĻ¯ā§ āĻāĻĒāĻ¨āĻžāĻ° āĻšā§āĻ¯āĻžāĻļ āĻ¸ā§āĻā§āĻ˛āĻžāĻ°ā§ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻāĻžāĻŦā§ āĻāĻāĻ°āĻŖ āĻāĻ°ā§
āĻĒā§āĻ°āĻ¸āĻā§āĻ
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž āĻā§āĻŦāĻ˛ "āĻ¸ā§āĻā§āĻ˛āĻžāĻ°" āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¯āĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻ˛ā§āĻ˛ā§āĻāĻŋāĻ¤ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻšā§āĻ¯āĻžāĻļā§āĻ° āĻāĻĒāĻ°
"$self->{LIST}":
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ˛āĻžāĻ° {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻ¸ā§āĻā§āĻ˛āĻžāĻ° %{ $self->{LIST} }
}
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
āĻāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ "āĻāĻ¨āĻāĻŋ" āĻāĻā§āĨ¤ āĻ¨ā§āĻā§ "The "untie" Gotcha āĻĻā§āĻā§āĻ¨āĨ¤
āĻāĻ āĻ§ā§āĻŦāĻāĻ¸
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻļ āĻ¸ā§āĻ¯ā§āĻā§āĻ° āĻŦāĻžāĻāĻ°ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¨āĻž
āĻāĻĒāĻ¨āĻŋ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻā§āĻ¨ āĻŦāĻž āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻšāĻžāĻ¯āĻŧāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻž āĻ¨āĻž āĻĨāĻžāĻāĻ˛ā§ āĻāĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨
āĻāĻĒ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻā§āĻŦ āĻ¸āĻšāĻ āĻĢāĻžāĻāĻļāĻ¨:
āĻāĻĒ āĻ§ā§āĻŦāĻāĻ¸ {
carp &whowasi āĻ¯āĻĻāĻŋ $DEBUG;
}
āĻ¯ā§āĻŽāĻ¨ āĻĢāĻžāĻāĻļāĻ¨ āĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ āĻā§() āĻāĻŦāĻ āĻŽāĻžāĻ¨ () āĻŦāĻĄāĻŧ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦāĻŋāĻļāĻžāĻ˛ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻ āĻŦāĻā§āĻā§āĻ, āĻ¯ā§āĻŽāĻ¨ DBM āĻĢāĻžāĻāĻ˛āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻāĻ¨ā§āĻĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ() āĻ¯ā§āĻŽāĻ¨ āĻāĻĒāĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻĢāĻžāĻāĻļāĻ¨.
āĻāĻĻāĻžāĻšāĻ°āĻŖ:
# āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻāĻ āĻāĻ¤āĻŋāĻšāĻžāĻ¸ āĻĢāĻžāĻāĻ˛ āĻ āĻĢāĻ¸ā§āĻ
NDBM_File āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻžāĻ (%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
āĻ¯āĻāĻ¨ (($key,$val) = āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ %HIST) {
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ $key, ' = ', āĻāĻ¨āĻĒā§āĻ¯āĻžāĻ('L',$val), "\n";
}
untie(%HIST);
tying āĻĢāĻžāĻāĻ˛ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻā§āĻ˛āĻŋ
āĻāĻāĻŋ āĻāĻāĻ¨ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻĢāĻžāĻāĻ˛āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§āĻ˛āĻŋāĻā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻŦā§: TIEHANDLE, at
PRINT, PRINTF, WRITE, READLINE, GETC, READ, āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻŦāĻ¨ā§āĻ§, UNTIE āĻāĻŦāĻ
āĻ§ā§āĻŦāĻāĻ¸. āĻā§āĻ˛āĻžāĻ¸ āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§: BINMODE, OPEN, EOF, FILENO, SEEK, TELL - āĻ¯āĻĻāĻŋ
āĻ¸āĻāĻļā§āĻ˛āĻŋāĻˇā§āĻ āĻĒāĻžāĻ°ā§āĻ˛ āĻ āĻĒāĻžāĻ°ā§āĻāĻ° āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¯āĻāĻ¨ STDERR āĻŦāĻžāĻāĻ§āĻž āĻĨāĻžāĻā§, āĻ¤āĻāĻ¨ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻāĻŦāĻ āĻ¤ā§āĻ°ā§āĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻāĻžāĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ° āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤
āĻāĻ˛ā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻ¸āĻžāĻŽāĻ¯āĻŧāĻŋāĻāĻāĻžāĻŦā§ āĻ āĻā§āĻˇāĻŽ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻĒāĻ¨āĻŋ "warn()" āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨
āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻ˛ā§āĻĒ āĻļā§āĻ°ā§ āĻ¨āĻž āĻāĻ°ā§āĻ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻā§āĻ° āĻāĻŋāĻ¤āĻ°ā§āĨ¤ āĻāĻŦāĻ āĻ āĻŋāĻ āĻ¯ā§āĻŽāĻ¨ "__WARN__" āĻāĻŦāĻ "__DIE__"
āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°, STDERR-āĻāĻ° āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻā§ āĻĒāĻžāĻ°ā§āĻ¸āĻžāĻ° āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ°āĻŋāĻĒā§āĻ°ā§āĻ āĻāĻ°āĻ¤ā§ āĻŦāĻ˛āĻž āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž
āĻĒāĻžāĻ°ā§āĻ˛āĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻā§ "%SIG" āĻāĻ° āĻ āĻ§ā§āĻ¨ā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻ āĻ¸āĻŦ āĻŦāĻŋāĻļā§āĻˇāĻāĻžāĻŦā§ āĻāĻĒāĻ¯ā§āĻā§ āĻ¯āĻāĻ¨ āĻĒāĻžāĻ°ā§āĻ˛ āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽā§ āĻāĻŽāĻŦā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻāĻāĻāĻĒā§āĻ
STDOUT āĻāĻŦāĻ STDERR-āĻ āĻāĻŋāĻā§ āĻŦāĻŋāĻļā§āĻˇ āĻāĻĒāĻžāĻ¯āĻŧā§ āĻĒā§āĻ¨āĻāĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻ¤ āĻšāĻ¤ā§ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ nvi āĻāĻŦāĻ āĻĻā§āĻā§āĻ¨
āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ ā§āĻ¯āĻžāĻĒāĻžāĻāĻŋ āĻŽāĻĄāĻŋāĻāĻ˛āĨ¤
āĻāĻāĻāĻŋ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻŦāĻžāĻāĻ§āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, "āĻāĻžāĻ" āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻŋ āĻāĻāĻāĻŋ āĻ¤āĻžāĻ°āĻāĻžāĻāĻŋāĻšā§āĻ¨ āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°āĻž āĻāĻāĻŋāĻ¤āĨ¤ āĻ¤āĻžāĻ āĻ¯āĻĻāĻŋ
āĻāĻĒāĻ¨āĻŋ STDOUT āĻŦāĻžāĻāĻ§āĻā§āĻ¨, *STDOUT āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ā§āĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻāĻ°ā§ āĻĨāĻžāĻā§āĻ¨, āĻŦāĻ˛ā§āĻ¨
$āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛, *$āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨āĨ¤ "āĻāĻžāĻ $āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛" āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ $āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻā§ āĻŦāĻžāĻāĻ§ā§, āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻ¨āĻ¯āĻŧ
āĻāĻāĻžāĻ° āĻāĻŋāĻ¤āĻ°ā§.
āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖā§ āĻāĻŽāĻ°āĻž āĻāĻāĻāĻŋ āĻāĻŋā§āĻāĻžāĻ° āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋāĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻŋā§āĻāĻžāĻ°;
TIEHANDLE āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻ¨āĻžāĻŽ, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¸ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻ¨āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ°āĨ¤ āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻĢāĻŋāĻ°ā§ āĻāĻļāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧ
āĻā§āĻ¨ āĻ§āĻ°āĻŖā§āĻ° āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĨ¤ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻŋāĻā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ¤āĻĨā§āĻ¯ āĻ°āĻžāĻāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§.
āĻ¸āĻžāĻŦ āĻāĻžāĻāĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ { āĻŽā§āĻĻā§āĻ°āĻŖ " \n"; āĻāĻŽāĻžāĻ° $i; āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻāĻ°ā§āĻ¨ \$i, āĻļāĻŋāĻĢāĻ }
āĻāĻāĻŋ āĻ˛āĻŋāĻā§āĻ¨, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ "syswrite" āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻŦ āĻ˛āĻŋāĻā§āĻ¨ {
$r = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ°($buf,$len,$offset) = @_;
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ "āĻ˛āĻŋāĻā§āĻ¨ āĻāĻ˛, \$buf=$buf, \$len=$len, \$offset=$offset";
}
āĻāĻāĻŋ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻ°ā§āĻ¨
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻŽā§āĻĻā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§
"print()" āĻŦāĻž "say()" āĻĢāĻžāĻāĻļāĻ¨āĨ¤ āĻāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§āĻ āĻāĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻāĻŋ āĻāĻļāĻž āĻāĻ°ā§
āĻ¯ā§ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻĢāĻžāĻāĻļāĻ¨ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§.
āĻ¸āĻžāĻŦ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ { $r = āĻļāĻŋāĻĢāĻ; $$r++; āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻ¯ā§āĻāĻĻāĻžāĻ¨($,,āĻŽāĻžāĻ¨āĻāĻŋāĻ¤ā§āĻ°(uc($_),@_)),$\ }
"say()" $\ āĻŦā§āĻ¯āĻ¤ā§āĻ¤ "print()" āĻāĻ° āĻŽāĻ¤ā§ āĻāĻžāĻ āĻāĻ°ā§ "\n" āĻ āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ¯āĻŧāĻāĻ°āĻŖ āĻāĻ°āĻž āĻšāĻŦā§ āĻ¤āĻžāĻ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§
"PRINT()"-āĻ "say()" āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§āĻˇ āĻāĻŋāĻā§ āĻ¨ā§āĻā§ˇ
āĻāĻāĻŋ āĻŽā§āĻĻā§āĻ°āĻŖ āĻāĻ°ā§āĻ¨, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŦāĻžāĻ° āĻā§āĻ°āĻŋāĻāĻžāĻ° āĻāĻ°āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ āĻĻāĻŋāĻ¯āĻŧā§ āĻŽā§āĻĻā§āĻ°āĻŋāĻ¤ āĻšāĻŦā§
"printf()" āĻĢāĻžāĻāĻļāĻ¨āĨ¤ āĻāĻ° āĻ¸ā§āĻŦ-āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻŦāĻžāĻāĻ°ā§āĻ āĻāĻāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻāĻŦāĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻāĻļāĻž āĻāĻ°ā§
āĻ¯ā§ printf āĻĢāĻžāĻāĻļāĻ¨ āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§.
āĻ¸āĻžāĻŦ PRINTF {
āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°;
āĻāĻŽāĻžāĻ° $fmt = āĻļāĻŋāĻĢāĻ;
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ sprintf($fmt, @_);
}
āĻāĻāĻŋ āĻĒāĻĄāĻŧā§āĻ¨, āĻ¤āĻžāĻ˛āĻŋāĻāĻž
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ "āĻ°āĻŋāĻĄ" āĻŦāĻž "sysread" āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻĄāĻŧāĻž āĻšāĻŦā§
āĻĢāĻžāĻāĻļāĻ¨āĨ¤
āĻāĻĒ āĻĒāĻĄāĻŧā§āĻ¨ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $bufref = \$__[0];
my(undef,$len,$offset) = @_;
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ "READ called, \$buf=$bufref, \$len=$len, \$offset=$offset";
# $$bufref-āĻ āĻ¯ā§āĻ āĻāĻ°ā§āĻ¨, āĻĒāĻĄāĻŧāĻžāĻ° āĻ āĻā§āĻˇāĻ°ā§āĻ° āĻ¸āĻāĻā§āĻ¯āĻžāĻ¯āĻŧ $len āĻ¸ā§āĻ āĻāĻ°ā§āĻ¨
$len;
}
āĻāĻ READLINE
āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¯āĻāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ "āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻĒāĻĄāĻŧāĻž āĻšāĻ¯āĻŧ " āĻŦāĻž "āĻ°āĻŋāĻĄāĻ˛āĻžāĻāĻ¨ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛"āĨ¤
"āĻ°āĻŋāĻĄāĻ˛āĻžāĻāĻ¨" āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻ¸ā§āĻā§āĻ˛āĻžāĻ° āĻĒā§āĻ°ā§āĻā§āĻˇāĻžāĻĒāĻā§ āĻāĻāĻŋāĻ° āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ˛āĻžāĻāĻ¨āĻāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤, āĻŦāĻž āĻ¨āĻž-āĻ° āĻāĻ¨ā§āĻ¯ "undef"
āĻāĻ°ā§ āĻ¤āĻĨā§āĻ¯āĨ¤ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĒā§āĻ°āĻ¸āĻā§āĻā§ āĻāĻāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ āĻŦāĻļāĻŋāĻˇā§āĻ āĻ˛āĻžāĻāĻ¨, āĻŦāĻž āĻāĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻšāĻŦā§
āĻā§āĻ¨ āĻ¤āĻĨā§āĻ¯ āĻ¨ā§āĻ. āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻ¸ā§āĻā§āĻ°āĻŋāĻāĻā§āĻ˛āĻŋāĻ¤ā§ āĻāĻ¨āĻĒā§āĻ āĻ°ā§āĻāĻ°ā§āĻĄ āĻŦāĻŋāĻāĻžāĻāĻ $/ (āĻĻā§āĻā§āĻ¨
perlvar), āĻ¯āĻĻāĻŋ āĻ¨āĻž āĻāĻāĻŋ "undef" (āĻ¯āĻžāĻ° āĻŽāĻžāĻ¨ā§ "slurp" āĻŽā§āĻĄ) āĻ¨āĻž āĻšāĻ¯āĻŧāĨ¤
āĻ¸āĻžāĻŦ āĻ°āĻŋāĻĄāĻ˛āĻžāĻāĻ¨ {
āĻāĻŽāĻžāĻ° $r = āĻļāĻŋāĻĢāĻ;
āĻ¯āĻĻāĻŋ (āĻāĻ¯āĻŧāĻžāĻ¨ā§āĻāĻžāĻ°ā§) {
āĻĢā§āĻ°āĻ¤ ("āĻŦāĻžāĻāĻŋ āĻ¸āĻŦ\n",
"āĻ˛āĻžāĻāĻ¨ āĻāĻĒ\n",
"eof\n");
} āĻ āĻ¨ā§āĻ¯ {
āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻāĻ°ā§āĻ¨ "READLINE" āĻ¨āĻžāĻŽā§āĨ¤ ++$$r "āĻŦāĻžāĻ°\n";
}
}
āĻāĻ GETC
"getc" āĻĢāĻžāĻāĻļāĻ¨ āĻāĻ˛ āĻāĻ°āĻž āĻšāĻ˛ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤
āĻ¸āĻžāĻŦ GETC { āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ "GETC āĻāĻ°āĻŦā§āĻ¨ āĻ¨āĻž, āĻĒāĻžāĻ°ā§āĻ˛ āĻĒāĻžāĻ¨"; āĻĢā§āĻ°āĻ¤ "a"; }
EOF āĻāĻ
āĻ¯āĻāĻ¨ "eof" āĻĢāĻžāĻāĻļāĻ¨ āĻŦāĻ˛āĻž āĻšāĻŦā§ āĻ¤āĻāĻ¨ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤
āĻĒāĻžāĻ°ā§āĻ˛ 5.12 āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒā§āĻ°ā§āĻŖāĻ¸āĻāĻā§āĻ¯āĻž āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻāĻž āĻšāĻŦā§
āĻļā§āĻ¨ā§āĻ¯ āĻ¯āĻĻāĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻāĻžāĻĄāĻŧāĻž "eof" āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ; 1 āĻ¯āĻĻāĻŋ "eof" āĻā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ
āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ°, āĻ¯ā§āĻŽāĻ¨ "eof(FH)"; āĻāĻŦāĻ 2 āĻā§āĻŦ āĻŦāĻŋāĻļā§āĻˇ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻ¯ā§āĻāĻŋ āĻŦāĻžāĻāĻ§āĻž āĻĢāĻžāĻāĻ˛āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛
"ARGV" āĻāĻŦāĻ "eof" āĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ˛āĻŋ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻāĻžāĻ° āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻš āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§āĻŽāĻ¨ "eof()"āĨ¤
āĻ¸āĻžāĻŦ EOF { āĻĻā§āĻ°ā§āĻā§āĻ¯ $stringbuf āĻ¨āĻ¯āĻŧ }
āĻāĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨
"āĻā§āĻ˛ā§āĻ" āĻĢāĻžāĻāĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛āĻāĻŋ āĻŦāĻ¨ā§āĻ§ āĻšāĻ˛ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻŦā§āĨ¤
āĻ¸āĻžāĻŦ āĻā§āĻ˛ā§āĻ { āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ "CLOSE āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧā§ˇ\n" }
āĻāĻāĻŋ āĻŽā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ¨ā§āĻ§āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ¤ā§, āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦāĻ˛āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ "āĻāĻ¨āĻāĻŋ" āĻāĻāĻŦā§āĨ¤ āĻāĻāĻž
āĻ¯āĻāĻ¨ āĻāĻāĻŋ āĻāĻā§ āĻ¤āĻāĻ¨ "āĻ¸ā§āĻŦāĻ¯āĻŧāĻāĻā§āĻ°āĻŋāĻ¯āĻŧāĻāĻžāĻŦā§ āĻŦāĻ¨ā§āĻ§" āĻāĻ°āĻž āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§ā§ˇ āĻ¨ā§āĻā§ "The "untie" Gotcha āĻĻā§āĻā§āĻ¨āĨ¤
āĻāĻ āĻ§ā§āĻŦāĻāĻ¸
āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ§āĻ°āĻ¨ā§āĻ° āĻŦāĻ¨ā§āĻ§āĻ¨āĻā§āĻ˛āĻŋāĻ° āĻŽāĻ¤ā§, āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋāĻā§ āĻŦāĻ˛āĻž āĻšāĻŦā§ āĻ¯āĻāĻ¨ āĻŦāĻžāĻāĻ§āĻž āĻšāĻžāĻ¤āĻ˛ āĻšāĻŦā§
āĻ§ā§āĻŦāĻāĻ¸ āĻšāĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻāĻŋ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻ āĻāĻŦāĻ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻĒāĻ°āĻŋāĻˇā§āĻāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĻāĻ°āĻāĻžāĻ°ā§āĨ¤
āĻ¸āĻžāĻŦ āĻĄāĻŋāĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻŧ { āĻŽā§āĻĻā§āĻ°āĻŖ " \n"}
āĻāĻŽāĻžāĻĻā§āĻ° āĻā§āĻ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŦā§āĻ¨ āĻ¤āĻž āĻāĻāĻžāĻ¨ā§:
āĻāĻžāĻ (*FOO, 'āĻāĻŋā§āĻāĻžāĻ°');
FOO āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨ "āĻšā§āĻ¯āĻžāĻ˛ā§\n";
$a = 4; $b = 6;
FOO $a, " āĻĒā§āĻ˛āĻžāĻ¸", $b, " āĻ¸āĻŽāĻžāĻ¨", $a + $b, "\n" āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨;
āĻāĻžāĻĒāĻž ;
UNTIE āĻāĻ
āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻĒā§āĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ UNTIE āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨ āĻ¯āĻž āĻāĻ˛ āĻāĻ°āĻž āĻšāĻŦā§ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž(). āĻĻā§āĻā§āĻ¨ "āĻĻāĻŋ
āĻ¨ā§āĻā§ "āĻāĻ¨āĻāĻŋ" āĻ§āĻ°āĻž"
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻŋāĻ° "āĻā§āĻ˛āĻž" gotcha
āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻāĻ¯āĻŧ āĻĨā§āĻā§ āĻĢāĻŋāĻ°ā§ āĻāĻ¸āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨ āĻāĻžāĻ() or āĻŦāĻžāĻāĻ§āĻž(), āĻāĻŦāĻ āĻ¯āĻĻāĻŋ
āĻāĻžāĻ āĻāĻ° āĻāĻžāĻ°ā§āĻā§āĻ āĻā§āĻ˛āĻžāĻ¸ āĻāĻāĻāĻŋ āĻ§ā§āĻŦāĻāĻ¸āĻāĻžāĻ°ā§ āĻ¸āĻāĻā§āĻāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°ā§, āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻˇā§āĻŽ āĻāĻĒāĻ¨āĻŋ āĻāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻŦāĻŋāĻ°ā§āĻĻā§āĻ§ā§ āĻĒāĻžāĻšāĻžāĻ°āĻž.
āĻ¸ā§āĻāĻāĻĒ āĻšāĻŋāĻ¸āĻžāĻŦā§, āĻāĻāĻāĻŋ āĻāĻžāĻ āĻāĻ° āĻāĻ (āĻ¸ā§āĻŦā§āĻā§āĻ¤āĻāĻžāĻŦā§ āĻŦāĻ°āĻ āĻ āĻ¨ā§āĻĒāĻ¯ā§āĻā§āĻ¤) āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦāĻŋāĻŦā§āĻāĻ¨āĻž āĻāĻ°ā§āĻ¨; āĻāĻāĻž āĻ¸āĻŦ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻšāĻ¯āĻŧ
āĻāĻāĻāĻŋ āĻ¸ā§āĻā§āĻ˛āĻžāĻ°ā§ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻŽāĻžāĻ¨āĻā§āĻ˛āĻŋāĻ° āĻ˛āĻ āĻ°āĻžāĻāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻ˛āĨ¤
āĻĒā§āĻ¯āĻžāĻā§āĻ āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨;
āĻāĻ ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
IO::āĻĢāĻžāĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻ¸āĻžāĻŦ āĻāĻžāĻāĻ¸ā§āĻā§āĻ¯āĻžāĻ˛āĻžāĻ° {
āĻāĻŽāĻžāĻ° $āĻā§āĻ˛āĻžāĻ¸ = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $filename = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $handle = IO::File->new( "> $filename" )
āĻ āĻĨāĻŦāĻž āĻĄāĻžāĻ "$filename āĻā§āĻ˛āĻ¤ā§ āĻĒāĻžāĻ°ā§ āĻ¨āĻž: $!\n";
$handle "The Start\n" āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨;
āĻāĻļā§āĻ°ā§āĻŦāĻžāĻĻ āĻāĻ°ā§āĻ¨ {FH => $handle, Value => 0}, $class;
}
āĻ¸āĻžāĻŦ FETCH {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻĢā§āĻ°āĻ¤ $self->{āĻŽāĻžāĻ¨};
}
āĻ¸āĻžāĻŦ āĻ¸ā§āĻā§āĻ° {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $āĻŽāĻžāĻ¨ = āĻļāĻŋāĻĢāĻ;
my $handle = $self->{FH};
$handle "$value\n" āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨;
$self->{Value} = $value;
}
āĻāĻĒ āĻ§ā§āĻŦāĻāĻ¸ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
my $handle = $self->{FH};
$handle "The End\n" āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§āĻ¨;
$āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ˛ āĻŦāĻ¨ā§āĻ§ āĻāĻ°ā§āĻ¨;
}
1;
āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¯āĻž āĻāĻ āĻāĻžāĻ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§:
āĻāĻ ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻŽāĻžāĻ° $āĻĢā§āĻ°ā§āĻĄ;
āĻāĻžāĻ $fred, 'āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨', 'myfile.txt';
$fred = 1;
$fred = 4;
$fred = 5;
$fred āĻā§āĻ˛ā§āĻ¨;
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ "cat myfile.txt";
āĻāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻāĻāĻāĻĒā§āĻ:
āĻļā§āĻ°ā§
1
4
5
āĻ¸āĻŽāĻžāĻĒā§āĻ¤āĻŋ
āĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻ¸āĻŦ āĻ āĻŋāĻāĻ. āĻāĻĒāĻ¨āĻžāĻ°āĻž āĻ¯āĻžāĻ°āĻž āĻŽāĻ¨ā§āĻ¯ā§āĻ āĻĻāĻŋāĻ¯āĻŧā§āĻā§āĻ¨ āĻ¤āĻžāĻ°āĻž āĻ˛āĻā§āĻˇā§āĻ¯ āĻāĻ°ā§āĻā§āĻ¨ āĻ¯ā§
āĻŦāĻžāĻāĻ§āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻāĻŋ āĻāĻ¤āĻĻāĻŋāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻ¸ā§āĻ¤āĻ°āĻžāĻ Remember class-āĻ āĻāĻāĻāĻŋ āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ¯ā§āĻ āĻāĻ°āĻž āĻ¯āĻžāĻ
āĻĢāĻžāĻāĻ˛ā§ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻ āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¨; āĻŦāĻ˛ā§āĻ¨, āĻāĻ°āĻāĻŽ āĻāĻŋāĻā§:
āĻ¸āĻžāĻŦ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ {
āĻāĻŽāĻžāĻ° $self = āĻļāĻŋāĻĢāĻ;
āĻāĻŽāĻžāĻ° $text = āĻļāĻŋāĻĢāĻ;
my $handle = $self->{FH};
āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ $handle $text, "\n";
}
āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§ "āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯" āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖāĻāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ (āĻ¯āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨
āĻŦāĻžāĻāĻ§āĻž āĻŦāĻ¸ā§āĻ¤ā§):
āĻāĻ ā§āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨;
āĻāĻŽāĻžāĻ° ($āĻĢā§āĻ°ā§āĻĄ, $x);
$x = āĻāĻžāĻ $fred, 'āĻŽāĻ¨ā§ āĻ°ā§āĻā§', 'myfile.txt';
$fred = 1;
$fred = 4;
āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ $x "āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻā§āĻā§...";
$fred = 5;
$fred āĻā§āĻ˛ā§āĻ¨;
āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ "cat myfile.txt";
āĻ¯āĻāĻ¨ āĻāĻ āĻā§āĻĄāĻāĻŋ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¤āĻāĻ¨ āĻā§āĻ¨ āĻāĻāĻāĻĒā§āĻ āĻĨāĻžāĻā§ āĻ¨āĻžāĨ¤ āĻāĻžāĻ°āĻŖāĻāĻž āĻāĻāĻžāĻ¨ā§:
āĻ¯āĻāĻ¨ āĻāĻāĻāĻŋ āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻŦāĻžāĻāĻ§āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻāĻ¨ āĻāĻāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻšāĻ¯āĻŧ āĻ¯āĻž āĻāĻ° āĻ°āĻŋāĻāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨
TIESCALAR, TIEARRAY, āĻŦāĻž TIEHASH āĻĢāĻžāĻāĻļāĻ¨āĨ¤ āĻāĻ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻā§,
āĻ¯āĻĨāĻž, āĻŦāĻžāĻāĻ§āĻž āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻļā§āĻ˛ āĻĨā§āĻā§ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĨ¤ āĻāĻāĻ¨ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž() āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¯ā§
āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻ¨āĻˇā§āĻ āĻšāĻ¯āĻŧāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°, āĻāĻĒāĻ°ā§āĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻĻāĻžāĻšāĻ°āĻŖā§āĻ° āĻŽāĻ¤ā§, āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ§ā§āĻŦāĻāĻ¸āĻāĻžāĻ°ā§
(DESTROY) āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž āĻāĻŽāĻ¨ āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻ āĻ¯ā§āĻā§āĻ˛ā§āĻ° āĻāĻ° āĻā§āĻ¨ā§ āĻŦā§āĻ§ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻ¨ā§āĻ; āĻāĻŦāĻ
āĻāĻāĻāĻžāĻŦā§ āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻŦāĻ¨ā§āĻ§āĨ¤
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻāĻĻāĻžāĻšāĻ°āĻŖā§, āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻŽāĻ°āĻž $x āĻ āĻŦāĻžāĻāĻ§āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ°ā§āĻāĻāĻŋ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°ā§āĻāĻŋāĨ¤
āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§ āĻ¯āĻāĻ¨ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž() āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻŦā§āĻ§ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻšāĻŦā§
āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻ āĻ¸ā§āĻ¤āĻŋāĻ¤ā§āĻŦ āĻāĻā§, āĻ¤āĻžāĻ āĻ¸ā§āĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻĄā§āĻ¸ā§āĻā§āĻ°āĻžāĻā§āĻāĻ° āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž, āĻāĻŦāĻ āĻāĻāĻāĻžāĻŦā§ āĻĢāĻžāĻāĻ˛āĻāĻŋ
āĻŦāĻ¨ā§āĻ§ āĻ¨āĻž āĻā§āĻ¨ āĻāĻāĻāĻĒā§āĻ āĻ¨ā§āĻ āĻāĻžāĻ°āĻŖ āĻĢāĻžāĻāĻ˛ āĻŦāĻžāĻĢāĻžāĻ° āĻšāĻ¯āĻŧā§āĻā§ āĻ¨āĻž
āĻĄāĻŋāĻ¸ā§āĻā§ āĻĢā§āĻ˛āĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻāĻāĻ¨ āĻāĻĒāĻ¨āĻŋ āĻāĻžāĻ¨ā§āĻ¨ āĻ¯ā§ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻāĻŋ āĻā§, āĻāĻĒāĻ¨āĻŋ āĻāĻāĻŋ āĻāĻĄāĻŧāĻžāĻ¤ā§ āĻā§ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨? āĻĒā§āĻ°ā§āĻŦā§
āĻāĻā§āĻāĻŋāĻ UNTIE āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ā§āĻ° āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻāĻĒāĻžāĻ¯āĻŧ āĻāĻŋāĻ˛ āĻāĻžāĻ˛ āĻĒā§āĻ°āĻžāĻ¨ā§ "-w" āĻĒāĻ¤āĻžāĻāĻžāĨ¤ āĻ¯āĻž
āĻāĻĒāĻ¨āĻŋ āĻāĻ˛ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻ¨ā§ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¸ā§āĻĒāĻ āĻāĻ°āĻŦā§ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž() āĻāĻŦāĻ āĻāĻāĻ¨āĻ āĻŦā§āĻ§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻā§
āĻŦāĻžāĻāĻ§āĻž āĻŦāĻ¸ā§āĻ¤ā§ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻāĻĒāĻ°ā§āĻ° āĻĻāĻŋāĻā§ āĻĨāĻžāĻā§ āĻ¤āĻžāĻšāĻ˛ā§ "āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž 'āĻāĻ¨āĻāĻžāĻ' āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨" āĻŦāĻž āĻāĻŋāĻ˛
"-w" āĻĒāĻ¤āĻžāĻāĻž āĻĻāĻŋāĻ¯āĻŧā§ āĻāĻžāĻ˛āĻžāĻ¨, āĻĒāĻžāĻ°ā§āĻ˛ āĻāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻāĻŋ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻ āĻāĻ°ā§:
1āĻāĻŋ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻāĻ¨āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻāĻžāĻāĻžāĻ˛ā§āĻ¨ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ā§ˇ
āĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻāĻāĻŋ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°āĻ¤ā§ āĻāĻŦāĻ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¨ā§āĻ°āĻŦ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻļā§āĻāĻŋāĻ¤ āĻāĻ°ā§āĻ¨ āĻ¯ā§ āĻā§āĻ¨āĻ āĻŦā§āĻ§ āĻ¨ā§āĻ
āĻŦāĻžāĻāĻ§āĻž āĻŦāĻ¸ā§āĻ¤ā§āĻ° āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻā§ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻž() āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ:
undef $x;
$fred āĻā§āĻ˛ā§āĻ¨;
āĻāĻāĻ¨ āĻ¯ā§āĻšā§āĻ¤ā§ UNTIE āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻā§āĻ˛āĻžāĻ¸ āĻĄāĻŋāĻāĻžāĻāĻ¨āĻžāĻ° āĻā§āĻ˛āĻžāĻ¸ āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻžāĻ° āĻā§āĻ¨ āĻ āĻāĻļāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§
āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ "unti" āĻāĻ° āĻ¸āĻžāĻĨā§ āĻ¯ā§āĻā§āĻ¤ āĻāĻŦāĻ āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻŦāĻ¸ā§āĻ¤ā§āĻāĻŋ āĻ§ā§āĻŦāĻāĻ¸ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻā§āĻā§āĨ¤ āĻāĻŋ āĻ¤ā§āĻ°ā§ āĻāĻ°ā§
āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻļā§āĻ°ā§āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ āĻ°ā§āĻĨ āĻ¨āĻŋāĻ°ā§āĻāĻ° āĻāĻ°ā§ āĻ¯ā§ āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸āĻā§āĻ˛āĻŋ āĻ°āĻžāĻāĻž āĻšāĻā§āĻā§ āĻāĻŋāĻ¨āĻž āĻ¤āĻžāĻ° āĻāĻĒāĻ°
āĻ¨āĻ¨-āĻāĻžāĻ-āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻŋāĻ¤ āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻ˛ āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ āĻ¤āĻŦā§ āĻŦā§āĻļāĻŋāĻ°āĻāĻžāĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§
UNTIE āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ¤ā§ DESTROY-āĻ āĻĨāĻžāĻāĻž āĻāĻžāĻ°ā§āĻ¯āĻāĻžāĻ°āĻŋāĻ¤āĻž āĻ¸āĻ°āĻžāĻ¨ā§āĻ° āĻ āĻ°ā§āĻĨāĨ¤
āĻ¯āĻĻāĻŋ UNTIE āĻĒāĻĻā§āĻ§āĻ¤āĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻĒāĻ°ā§āĻ° āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻžāĻāĻŋ āĻāĻāĻŦā§ āĻ¨āĻžāĨ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§ UNTIE āĻĒāĻĻā§āĻ§āĻ¤āĻŋ
"āĻ āĻ¤āĻŋāĻ°āĻŋāĻā§āĻ¤" āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ā§āĻ° āĻāĻŖāĻ¨āĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻšāĻ˛ā§ āĻ¨āĻŋāĻāĻ¸ā§āĻŦ āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻāĻžāĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ¯ā§āĻŽāĻ¨ āĻ¨ā§ UNTIE āĻā§āĻ¸ āĻĒā§āĻ°āĻ¤āĻŋāĻ˛āĻŋāĻĒāĻŋ āĻāĻ°āĻ¤ā§ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§:
āĻ¸āĻžāĻŦ UNTIE
{
āĻāĻŽāĻžāĻ° ($obj,$count) = @_;
carp "$count āĻ āĻā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§āĻŖ āĻ°ā§āĻĢāĻžāĻ°ā§āĻ¨ā§āĻ¸ āĻāĻāĻ¨āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻāĻžāĻāĻžāĻ˛ā§āĻ¨ āĻŽā§āĻā§āĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§" āĻ¯āĻĻāĻŋ $count;
}
onworks.net āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ āĻ¨āĻ˛āĻžāĻāĻ¨ā§ perltie āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨