Skillslegacy-perl-patterns-skill
L

legacy-perl-patterns-skill

This skill provides guidelines and patterns for writing Perl code that maintains backward compatibility with older Perl versions (down to 5.8) as required by the MySQLTuner project constitution.

major
9.4k stars
188.5k downloads
Updated 2w ago

Readme

legacy-perl-patterns-skill follows the SKILL.md standard. Use the install command to add it to your agent stack.

# Legacy Perl Patterns Skill

## Description

This skill provides guidelines and patterns for writing Perl code that maintains backward compatibility with older Perl versions (down to 5.8) as required by the MySQLTuner project constitution.

## Anti-Patterns (Avoid)

### 1. `say` (Perl 5.10+)

**Wrong:**

```perl
use feature 'say';
say "Hello";
```

**Right:**

```perl
print "Hello\n";
```

### 2. `state` variables (Perl 5.10+)

**Wrong:**

```perl
use feature 'state';
sub foo {
    state $x = 0;
    $x++;
}
```

**Right:**

```perl
{
    my $x = 0;
    sub foo {
        $x++;
    }
}
```

### 3. Defined-or operator `//` (Perl 5.10+)

**Wrong:**

```perl
my $a = $b // $c;
```

**Right:**

```perl
my $a = defined($b) ? $b : $c;
```

### 4. `given` / `when` (Switch statements)

**Wrong:**

```perl
given ($foo) { when(1) { ... } }
```

**Right:**

```perl
if ($foo == 1) { ... }
elsif ($foo == 2) { ... }
```

## Safe Patterns (Recommended)

### 1. Three-argument `open`

Always use the 3-arg form of open for safety, but check support if targeting extremely old perl (pre-5.6), though 5.8 is our floor.

```perl
open(my $fh, '<', $filename) or die "Cannot open $filename: $!";
```

### 2. Modular compatibility

Avoid `use Module::Name` if the module wasn't core in 5.8.
Check `corelist` if unsure.
Example: `Time::HiRes` is core since 5.8.

### 3. Regex

Avoid 5.10+ regex extensions (e.g. named capture groups `(?<name>...)` unless you are sure). Use standard capturing parentheses `(...)`.

## Validation

Always test syntax with a lower version of perl if available, or rely on strict `make test` environment containers that might emulate older setups.

Install

Requires askill CLI v1.0+

Metadata

LicenseUnknown
Version-
Updated2w ago
Publishermajor

Tags

testing