PL

text/x-perl

Safe

Magic Bytes

Offset: 0
65 76 61 6C 20 22 65 78 65 63 20 2F 75 73 72 2F 6C 6F 63 61 6C 2F 62 69 6E 2F 70 65 72 6C

Perl Script (PL) is a high-level, general-purpose programming language file format created by Larry Wall and maintained by The Perl Foundation. It is primarily utilized for system administration, web development via Common Gateway Interface (CGI), and automated text processing tasks. While the format consists of plain text, these files contain executable code that requires a Perl interpreter to run, necessitating careful verification of source authenticity to prevent unauthorized system access or arbitrary command execution.

Extension

.pl

MIME Type

text/x-perl

Byte Offset

0

Risk Level

Safe

Validation Code

How to validate .pl files in Python

Python
def is_pl(file_path: str) -> bool:
    """Check if file is a valid PL by magic bytes."""
    signature = bytes([0x65, 0x76, 0x61, 0x6C, 0x20, 0x22, 0x65, 0x78, 0x65, 0x63, 0x20, 0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2F, 0x62, 0x69, 0x6E, 0x2F, 0x70, 0x65, 0x72, 0x6C])
    with open(file_path, "rb") as f:
        return f.read(30) == signature

How to validate .pl files in Node.js

Node.js
function isPL(buffer: Buffer): boolean {
  const signature = Buffer.from([0x65, 0x76, 0x61, 0x6C, 0x20, 0x22, 0x65, 0x78, 0x65, 0x63, 0x20, 0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2F, 0x62, 0x69, 0x6E, 0x2F, 0x70, 0x65, 0x72, 0x6C]);
  return buffer.subarray(0, 30).equals(signature);
}
Go
func IsPL(data []byte) bool {
    signature := []byte{0x65, 0x76, 0x61, 0x6C, 0x20, 0x22, 0x65, 0x78, 0x65, 0x63, 0x20, 0x2F, 0x75, 0x73, 0x72, 0x2F, 0x6C, 0x6F, 0x63, 0x61, 0x6C, 0x2F, 0x62, 0x69, 0x6E, 0x2F, 0x70, 0x65, 0x72, 0x6C}
    if len(data) < 30 {
        return false
    }
    return bytes.Equal(data[:30], signature)
}

API Endpoint

GET /api/v1/pl
curl https://filesignature.org/api/v1/pl

Related Formats