Slurm::Constant(3pm)

NAME
Slurm::Constant - Constants for use with Slurm

SYNOPSIS
 use Slurm qw(:constant);

 if ($rc != SLURM_SUCCESS {
         print STDERR "action failed!\n";
 }

DESCRIPTION
This package export constants for use with Slurm. This includes enumerations and defined macros. The constants will be exported to package Slurm and the package which "use Slurm qw(:constant);".

EXPORTED CONSTANTS

  DEFINED MACROS
Misc values

•   TRUE 1

•   FALSE 0

•   INFINITE 0xffffffff

•   INFINITE64 0xffffffffffffffff

•   NO_VAL 0xfffffffe

•   NO_VAL64 0xfffffffffffffffe

•   MAX_TASKS_PER_NODE 128

•   SLURM_BATCH_SCRIPT 0xfffffffe

Job state flags

•   JOB_STATE_BASE 0x000000ff

•   JOB_STATE_FLAGS 0xffffff00

•   JOB_COMPLETING 0x00008000

•   JOB_CONFIGURING 0x00004000

•   JOB_RESIZING 0x00002000

•   JOB_SIGNALING 0x00400000

•   READY_JOB_FATAL -2

•   READY_JOB_ERROR -1

•   READY_NODE_STATE 0x01

•   READY_JOB_STATE 0x02

Job mail notification

•   MAIL_JOB_BEGIN 0x0001

•   MAIL_JOB_END 0x0002

•   MAIL_JOB_FAIL 0x0004

•   MAIL_JOB_REQUEUE 0x0008

•   MAIL_INVALID_DEPEND 0x0400

Offset for job's nice value

•   NICE_OFFSET 0x80000000

Partition state flags

•   PARTITION_SUBMIT 0x01

•   PARTITION_SCHED 0x02

•   PARTITION_DOWN 0x01

•   PARTITION_UP 0x03

•   PARTITION_DRAIN 0x02

•   PARTITION_INACTIVE 0x00

Open stdout/stderr mode

•   OPEN_MODE_APPEND 1

•   OPEN_MODE_TRUNCATE 2

Node state flags

•   NODE_STATE_BASE 0x000f

•   NODE_STATE_FLAGS 0xfff0

•   NODE_STATE_NET 0x0010

•   NODE_STATE_RES 0x0020

•   NODE_STATE_UNDRAIN 0x0040

•   NODE_STATE_CLOUD 0x0080

•   NODE_RESUME 0x0100

•   NODE_STATE_DRAIN 0x0200

•   NODE_STATE_COMPLETING 0x0400

•   NODE_STATE_NO_RESPOND 0x0800

•   NODE_STATE_POWERED_DOWN 0x1000

•   NODE_STATE_FAIL 0x2000

•   NODE_STATE_POWER_UP 0x4000

•   NODE_STATE_MAINT 0x8000

Size of the credential signature

•   SLURM_SSL_SIGNATURE_LENGTH 128

show_flags of slurm_get_/slurm_load_ function calls

•   SHOW_ALL 0x0001

•   SHOW_DETAIL 0x0002

Consumerable resources parameters

•   CR_CPU 0x0001

•   CR_SOCKET 0x0002

•   CR_CORE 0x0004

•   CR_MEMORY 0x0010

•   CR_ONE_TASK_PER_CORE 0x0100

•   CR_CORE_DEFAULT_DIST_BLOCK 0x1000

•   MEM_PER_CPU 0x8000000000000000

•   SHARED_FORCE 0x8000

Private data values

•   PRIVATE_DATA_JOBS 0x0001

•   PRIVATE_DATA_NODES 0x0002

•   PRIVATE_DATA_PARTITIONS 0x0004

•   PRIVATE_DATA_USAGE 0x0008

•   PRIVATE_DATA_USERS 0x0010

•   PRIVATE_DATA_ACCOUNTS 0x0020

•   PRIVATE_DATA_RESERVATIONS 0x0040

Priority reset period

•   PRIORITY_RESET_NONE 0x0000

•   PRIORITY_RESET_NOW 0x0001

•   PRIORITY_RESET_DAILY 0x0002

•   PRIORITY_RESET_WEEKLY 0x0003

•   PRIORITY_RESET_MONTHLY 0x0004

•   PRIORITY_RESET_QUARTERLY 0x0005

•   PRIORITY_RESET_YEARLY 0x0006

Process priority propagation

•   PROP_PRIO_OFF 0x0000

•   PROP_PRIO_ON 0x0001

•   PROP_PRIO_NICER 0x0002

Partition state information

•   PART_FLAG_DEFAULT 0x0001

•   PART_FLAG_HIDDEN 0x0002

•   PART_FLAG_NO_ROOT 0x0004

•   PART_FLAG_ROOT_ONLY 0x0008

•   PART_FLAG_DEFAULT_CLR 0x0100

•   PART_FLAG_HIDDEN_CLR 0x0200

•   PART_FLAG_NO_ROOT_CLR 0x0400

•   PART_FLAG_ROOT_ONLY_CLR 0x0800

Reservation flags

•   RESERVE_FLAG_MAINT 0x00000001

•   RESERVE_FLAG_NO_MAINT 0x00000002

•   RESERVE_FLAG_DAILY 0x00000004

•   RESERVE_FLAG_NO_DAILY 0x00000008

•   RESERVE_FLAG_WEEKLY 0x00000010

•   RESERVE_FLAG_NO_WEEKLY 0x00000020

•   RESERVE_FLAG_IGN_JOBS 0x00000040

•   RESERVE_FLAG_NO_IGN_JOB 0x00000080

•   RESERVE_FLAG_OVERLAP 0x00004000

•   RESERVE_FLAG_SPEC_NODES 0x00008000

•   RESERVE_FLAG_HOURLY 0x00010000

•   RESERVE_FLAG_NO_HOURLY 0x00020000

Log debug flags

•   DEBUG_FLAG_SELECT_TYPE 0x00000001

•   DEBUG_FLAG_STEPS 0x00000002

•   DEBUG_FLAG_TRIGGERS 0x00000004

•   DEBUG_FLAG_CPU_BIND 0x00000008

•   DEBUG_FLAG_WIKI 0x00000010

•   DEBUG_FLAG_NO_CONF_HASH 0x00000020

•   DEBUG_FLAG_GRES 0x00000040

•   DEBUG_FLAG_BG_PICK 0x00000080

•   DEBUG_FLAG_BG_WIRES 0x00000100

•   DEBUG_FLAG_BG_ALGO 0x00000200

•   DEBUG_FLAG_BG_ALGO_DEEP 0x00000400

•   DEBUG_FLAG_PRIO 0x00000800

•   DEBUG_FLAG_BACKFILL 0x00001000

•   DEBUG_FLAG_GANG 0x00002000

•   DEBUG_FLAG_RESERVATION 0x00004000

Preempt mode

•   PREEMPT_MODE_OFF 0x0000

•   PREEMPT_MODE_SUSPEND 0x0001

•   PREEMPT_MODE_REQUEUE 0x0002

•   PREEMPT_MODE_CANCEL 0x0008

•   PREEMPT_MODE_GANG 0x8000

Trigger type

•
    TRIGGER_RES_TYPE_JOB            0x0001

•
    TRIGGER_RES_TYPE_NODE           0x0002

•   TRIGGER_RES_TYPE_SLURMCTLD 0x0003

•   TRIGGER_RES_TYPE_SLURMDBD 0x0004

•   TRIGGER_RES_TYPE_DATABASE 0x0005

•   TRIGGER_TYPE_UP 0x00000001

•   TRIGGER_TYPE_DOWN 0x00000002

•   TRIGGER_TYPE_FAIL 0x00000004

•   TRIGGER_TYPE_TIME 0x00000008

•   TRIGGER_TYPE_FINI 0x00000010

•   TRIGGER_TYPE_RECONFIG 0x00000020

•   TRIGGER_TYPE_BLOCK_ERR 0x00000040

•   TRIGGER_TYPE_IDLE 0x00000080

•   TRIGGER_TYPE_DRAINED 0x00000100

•   TRIGGER_TYPE_PRI_CTLD_FAIL 0x00000200

•   TRIGGER_TYPE_PRI_CTLD_RES_OP 0x00000400

•   TRIGGER_TYPE_PRI_CTLD_RES_CTRL 0x00000800

•   TRIGGER_TYPE_PRI_CTLD_ACCT_FULL 0x00001000

•   TRIGGER_TYPE_BU_CTLD_FAIL 0x00002000

•   TRIGGER_TYPE_BU_CTLD_RES_OP 0x00004000

•   TRIGGER_TYPE_BU_CTLD_AS_CTRL 0x00008000

•   TRIGGER_TYPE_PRI_DBD_FAIL 0x00010000

•   TRIGGER_TYPE_PRI_DBD_RES_OP 0x00020000

•   TRIGGER_TYPE_PRI_DB_FAIL 0x00040000

•   TRIGGER_TYPE_PRI_DB_RES_OP 0x00080000

•   TRIGGER_TYPE_BURST_BUFFER 0x00100000

•   TRIGGER_TYPE_DRAINING 0x00200000

•   TRIGGER_TYPE_RESUME 0x00400000

  Enumerations
Job states

•   JOB_PENDING 0

•   JOB_RUNNING 1

•   JOB_SUSPENDED 2

•   JOB_COMPLETE 3

•   JOB_CANCELLED 4

•   JOB_FAILED 5

•   JOB_TIMEOUT 6

•   JOB_NODE_FAIL 7

•   JOB_PREEMPTED 8

•   JOB_BOOT_FAIL 9

•   JOB_END 10

Job state reason

•   WAIT_NO_REASON 0

•   WAIT_PRIORITY 1

•   WAIT_DEPENDENCY 2

•   WAIT_RESOURCES 3

•   WAIT_PART_NODE_LIMIT 4

•   WAIT_PART_TIME_LIMIT 5

•   WAIT_PART_DOWN 6

•   WAIT_PART_INACTIVE 7

•   WAIT_HELD 8

•   WAIT_TIME 9

•   WAIT_LICENSES 10

•   WAIT_ASSOC_JOB_LIMIT 11

•   WAIT_ASSOC_RESOURCE_LIMIT 12

•   WAIT_ASSOC_TIME_LIMIT 13

•   WAIT_RESERVATION 14

•   WAIT_NODE_NOT_AVAIL 15

•   WAIT_HELD_USER 16

•   WAIT_TBD2 17

•   FAIL_DOWN_PARTITION 18

•   FAIL_DOWN_NODE 19

•   FAIL_BAD_CONSTRAINTS 20

•   FAIL_SYSTEM 21

•   FAIL_LAUNCH 22

•   FAIL_EXIT_CODE 23

•   FAIL_TIMEOUT 24

•   FAIL_INACTIVE_LIMIT 25

•   FAIL_ACCOUNT 26

•   FAIL_QOS 27

•   WAIT_QOS_THRES 28

Job account types

•   JOB_START 0

•   JOB_STEP 1

•   JOB_SUSPEND 2

•   JOB_TERMINATED 3

Job Condition Flags

•   JOBCOND_FLAG_DUP 0x00000001

•   JOBCOND_FLAG_NO_STEP 0x00000002

•   JOBCOND_FLAG_NO_TRUNC 0x00000004

•   JOBCOND_FLAG_RUNAWAY 0x00000008

•   JOBCOND_FLAG_WHOLE_HETJOB 0x00000010

•   JOBCOND_FLAG_NO_WHOLE_HETJOB 0x00000020

Select nodedata type

•   SELECT_NODEDATA_SUBCNT 2

•   SELECT_NODEDATA_PTR 5

Select print mode

•   SELECT_PRINT_HEAD 0

•   SELECT_PRINT_DATA 1

•   SELECT_PRINT_MIXED 2

•   SELECT_PRINT_MIXED_SHORT 3

•   SELECT_PRINT_BG_ID 4

•   SELECT_PRINT_NODES 5

•   SELECT_PRINT_CONNECTION 6

•   SELECT_PRINT_ROTATE 7

•   SELECT_PRINT_GEOMETRY 8

•   SELECT_PRINT_START 9

•   SELECT_PRINT_BLRTS_IMAGE 10

•   SELECT_PRINT_LINUX_IMAGE 11

•   SELECT_PRINT_MLOADER_IMAGE 12

•   SELECT_PRINT_RAMDISK_IMAGE 13

•   SELECT_PRINT_REBOOT 14

•   SELECT_PRINT_RESV_ID 15

Select node cnt

•   SELECT_GET_NODE_SCALING 0

•   SELECT_GET_NODE_CPU_CNT 1

•   SELECT_GET_BP_CPU_CNT 2

•   SELECT_APPLY_NODE_MIN_OFFSET 3

•   SELECT_APPLY_NODE_MAX_OFFSET 4

•   SELECT_SET_NODE_CNT 5

•   SELECT_SET_BP_CNT 6

Jobacct data type

•   JOBACCT_DATA_TOTAL 0

•   JOBACCT_DATA_PIPE 1

•   JOBACCT_DATA_RUSAGE 2

•   JOBACCT_DATA_MAX_VSIZE 3

•   JOBACCT_DATA_MAX_VSIZE_ID 4

•   JOBACCT_DATA_TOT_VSIZE 5

•   JOBACCT_DATA_MAX_RSS 6

•   JOBACCT_DATA_MAX_RSS_ID 7

•   JOBACCT_DATA_TOT_RSS 8

•   JOBACCT_DATA_MAX_PAGES 9

•   JOBACCT_DATA_MAX_PAGES_ID 10

•   JOBACCT_DATA_TOT_PAGES 11

•   JOBACCT_DATA_MIN_CPU 12

•   JOBACCT_DATA_MIN_CPU_ID 13

•   JOBACCT_DATA_TOT_CPU 14

TRES Records

•   TRES_CPU 1

•   TRES_MEM 2

•   TRES_ENERGY 3

•   TRES_NODE 4

•   TRES_BILLING 5

•   TRES_FS_DISK 6

•   TRES_VMEM 7

•   TRES_PAGES 8

Task distribution

•   SLURM_DIST_CYCLIC 1

•   SLURM_DIST_BLOCK 2

•   SLURM_DIST_ARBITRARY 3

•   SLURM_DIST_PLANE 4

•   SLURM_DIST_CYCLIC_CYCLIC 5

•   SLURM_DIST_CYCLIC_BLOCK 6

•   SLURM_DIST_BLOCK_CYCLIC 7

•   SLURM_DIST_BLOCK_BLOCK 8

•   SLURM_NO_LLLP_DIST 9

•   SLURM_DIST_UNKNOWN 10

CPU bind type

•   CPU_BIND_VERBOSE 0x01

•   CPU_BIND_TO_THREADS 0x02

•   CPU_BIND_TO_CORES 0x04

•   CPU_BIND_TO_SOCKETS 0x08

•   CPU_BIND_TO_LDOMS 0x10

•   CPU_BIND_NONE 0x20

•   CPU_BIND_RANK 0x40

•   CPU_BIND_MAP 0x80

•   CPU_BIND_MASK 0x100

•   CPU_BIND_LDRANK 0x200

•   CPU_BIND_LDMAP 0x400

•   CPU_BIND_LDMASK 0x800

Memory bind type

•   MEM_BIND_VERBOSE 0x01

•   MEM_BIND_NONE 0x02

•   MEM_BIND_RANK 0x04

•   MEM_BIND_MAP 0x08

•   MEM_BIND_MASK 0x10

•   MEM_BIND_LOCAL 0x20

Node state

•   NODE_STATE_UNKNOWN 0

•   NODE_STATE_DOWN 1

•   NODE_STATE_IDLE 2

•   NODE_STATE_ALLOCATED 3

•   NODE_STATE_ERROR 4

•   NODE_STATE_MIXED 5

•   NODE_STATE_FUTURE 6

•   NODE_STATE_END 7

Ctx keys

•   SLURM_STEP_CTX_STEPID 0

•   SLURM_STEP_CTX_TASKS 1

•   SLURM_STEP_CTX_TID 2

•   SLURM_STEP_CTX_RESP 3

•   SLURM_STEP_CTX_CRED 4

•   SLURM_STEP_CTX_SWITCH_JOB 5

•   SLURM_STEP_CTX_NUM_HOSTS 6

•   SLURM_STEP_CTX_HOST 7

•   SLURM_STEP_CTX_JOBID 8

•   SLURM_STEP_CTX_USER_MANAGED_SOCKETS 9

head2 SLURM ERRNO

Defined macro error values

•   SLURM_SUCCESS 0

•   SLURM_ERROR -1

General Message error codes

•   SLURM_UNEXPECTED_MSG_ERROR 1000

•   SLURM_COMMUNICATIONS_CONNECTION_ERROR 1001

•   SLURM_COMMUNICATIONS_SEND_ERROR 1002

•   SLURM_COMMUNICATIONS_RECEIVE_ERROR 1003

•   SLURM_COMMUNICATIONS_SHUTDOWN_ERROR 1004

•   SLURM_PROTOCOL_VERSION_ERROR 1005

•   SLURM_PROTOCOL_IO_STREAM_VERSION_ERROR 1006

•   SLURM_PROTOCOL_AUTHENTICATION_ERROR 1007

•   SLURM_PROTOCOL_INSANE_MSG_LENGTH 1008

•   SLURM_MPI_PLUGIN_NAME_INVALID 1009

•   SLURM_MPI_PLUGIN_PRELAUNCH_SETUP_FAILED 1010

•   SLURM_PLUGIN_NAME_INVALID 1011

•   SLURM_UNKNOWN_FORWARD_ADDR 1012

communication failures to/from slurmctld

•   SLURMCTLD_COMMUNICATIONS_CONNECTION_ERROR 1800

•   SLURMCTLD_COMMUNICATIONS_SEND_ERROR 1801

•   SLURMCTLD_COMMUNICATIONS_RECEIVE_ERROR 1802

•   SLURMCTLD_COMMUNICATIONS_SHUTDOWN_ERROR 1803

_info.c/communication layer RESPONSE_SLURM_RC message codes

•   SLURM_NO_CHANGE_IN_DATA 1900

slurmctld error codes

•   ESLURM_INVALID_PARTITION_NAME 2000

•   ESLURM_DEFAULT_PARTITION_NOT_SET 2001

•   ESLURM_ACCESS_DENIED 2002

•   ESLURM_JOB_MISSING_REQUIRED_PARTITION_GROUP 2003

•   ESLURM_REQUESTED_NODES_NOT_IN_PARTITION 2004

•   ESLURM_TOO_MANY_REQUESTED_CPUS 2005

•   ESLURM_INVALID_NODE_COUNT 2006

•   ESLURM_ERROR_ON_DESC_TO_RECORD_COPY 2007

•   ESLURM_JOB_MISSING_SIZE_SPECIFICATION 2008

•   ESLURM_JOB_SCRIPT_MISSING 2009

•   ESLURM_USER_ID_MISSING 2010

•   ESLURM_DUPLICATE_JOB_ID 2011

•   ESLURM_PATHNAME_TOO_LONG 2012

•   ESLURM_NOT_TOP_PRIORITY 2013

•   ESLURM_REQUESTED_NODE_CONFIG_UNAVAILABLE 2014

•   ESLURM_REQUESTED_PART_CONFIG_UNAVAILABLE 2015

•   ESLURM_NODES_BUSY 2016

•   ESLURM_INVALID_JOB_ID 2017

•   ESLURM_INVALID_NODE_NAME 2018

•   ESLURM_WRITING_TO_FILE 2019

•   ESLURM_TRANSITION_STATE_NO_UPDATE 2020

•   ESLURM_ALREADY_DONE 2021

•   ESLURM_INTERCONNECT_FAILURE 2022

•   ESLURM_BAD_DIST 2023

•   ESLURM_JOB_PENDING 2024

•   ESLURM_BAD_TASK_COUNT 2025

•   ESLURM_INVALID_JOB_CREDENTIAL 2026

•   ESLURM_IN_STANDBY_MODE 2027

•   ESLURM_INVALID_NODE_STATE 2028

•   ESLURM_INVALID_FEATURE 2029

•   ESLURM_INVALID_AUTHTYPE_CHANGE 2030

•   ESLURM_INVALID_SCHEDTYPE_CHANGE 2032

•   ESLURM_INVALID_SELECTTYPE_CHANGE 2033

•   ESLURM_INVALID_SWITCHTYPE_CHANGE 2034

•   ESLURM_FRAGMENTATION 2035

•   ESLURM_NOT_SUPPORTED 2036

•   ESLURM_DISABLED 2037

•   ESLURM_DEPENDENCY 2038

•   ESLURM_BATCH_ONLY 2039

•   ESLURM_JOB_HELD 2042

•   ESLURM_INVALID_CRED_TYPE_CHANGE 2043

•   ESLURM_INVALID_TASK_MEMORY 2044

•   ESLURM_INVALID_ACCOUNT 2045

•   ESLURM_INVALID_PARENT_ACCOUNT 2046

•   ESLURM_SAME_PARENT_ACCOUNT 2047

•   ESLURM_INVALID_LICENSES 2048

•   ESLURM_NEED_RESTART 2049

•   ESLURM_ACCOUNTING_POLICY 2050

•   ESLURM_INVALID_TIME_LIMIT 2051

•   ESLURM_RESERVATION_ACCESS 2052

•   ESLURM_RESERVATION_INVALID 2053

•   ESLURM_INVALID_TIME_VALUE 2054

•   ESLURM_RESERVATION_BUSY 2055

•   ESLURM_RESERVATION_NOT_USABLE 2056

•   ESLURM_INVALID_WCKEY 2057

•   ESLURM_RESERVATION_OVERLAP 2058

•   ESLURM_PORTS_BUSY 2059

•   ESLURM_PORTS_INVALID 2060

•   ESLURM_PROLOG_RUNNING 2061

•   ESLURM_NO_STEPS 2062

•   ESLURM_INVALID_QOS 2066

•   ESLURM_QOS_PREEMPTION_LOOP 2067

•   ESLURM_NODE_NOT_AVAIL 2068

•   ESLURM_INVALID_CPU_COUNT 2069

•   ESLURM_PARTITION_NOT_AVAIL 2070

•   ESLURM_CIRCULAR_DEPENDENCY 2071

•   ESLURM_INVALID_GRES 2072

•   ESLURM_JOB_NOT_PENDING 2073

switch specific error codes specific values defined in plugin module

•   ESLURM_SWITCH_MIN 3000

•   ESLURM_SWITCH_MAX 3099

•   ESLURM_JOBCOMP_MIN 3100

•   ESLURM_JOBCOMP_MAX 3199

•   ESLURM_SCHED_MIN 3200

•   ESLURM_SCHED_MAX 3299

slurmd error codes

•   ESLURMD_KILL_TASK_FAILED 4001

•   ESLURMD_KILL_JOB_ALREADY_COMPLETE 4002

•   ESLURMD_INVALID_ACCT_FREQ 4003

•   ESLURMD_INVALID_JOB_CREDENTIAL 4004

•   ESLURMD_CREDENTIAL_EXPIRED 4007

•   ESLURMD_CREDENTIAL_REVOKED 4008

•   ESLURMD_CREDENTIAL_REPLAYED 4009

•   ESLURMD_CREATE_BATCH_DIR_ERROR 4010

•   ESLURMD_SETUP_ENVIRONMENT_ERROR 4014

•   ESLURMD_SET_UID_OR_GID_ERROR 4016

•   ESLURMD_EXECVE_FAILED 4020

•   ESLURMD_IO_ERROR 4021

•   ESLURMD_PROLOG_FAILED 4022

•   ESLURMD_EPILOG_FAILED 4023

•   ESLURMD_TOOMANYSTEPS 4025

•   ESLURMD_STEP_EXISTS 4026

•   ESLURMD_JOB_NOTRUNNING 4027

•   ESLURMD_STEP_SUSPENDED 4028

•   ESLURMD_STEP_NOTSUSPENDED 4029

•   ESLURMD_INVALID_SOCKET_NAME_LEN 4030

socket specific Slurm communications error

•   ESLURM_PROTOCOL_INCOMPLETE_PACKET 5003

•   SLURM_PROTOCOL_SOCKET_IMPL_TIMEOUT 5004

•   SLURM_PROTOCOL_SOCKET_ZERO_BYTES_SENT 5005

slurm_auth errors

•   ESLURM_AUTH_CRED_INVALID 6000

•   ESLURM_AUTH_BADARG 6004

•   ESLURM_AUTH_UNPACK 6007

•   ESLURM_AUTH_SKIP 6008

accounting errors

•   ESLURM_DB_CONNECTION 7000

•   ESLURM_JOBS_RUNNING_ON_ASSOC 7001

•   ESLURM_CLUSTER_DELETED 7002

•   ESLURM_ONE_CHANGE 7003

SEE ALSO
Slurm

AUTHOR
This library is created by Hongjia Cao, <hjcao(AT)nudt.edu.cn> and Danny Auble, <da(AT)llnl.gov>. It is distributed with Slurm.

COPYRIGHT AND LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.