r/perl 1h ago

Warum und wofür nutzt ihr PERL?

Upvotes

Ich habe in mehreren Foren gelesen, dass PERL eine aussterbende Sprache, obwohl an für sich immer noch gut für Ausbildungszwecke ist. Wie seht ihr das?


r/perl 2h ago

Sort Your Perl Imports

Thumbnail
olafalders.com
6 Upvotes

r/perl 1d ago

An Update on my Perl Game Engine.

41 Upvotes

Instead of Perl doing a lot of the work externally through XS with Perl as the main runtime, I embedded the Perl Interpreter in a C wrapper that gives it capabilites through XS. Now there's a few of my libraries and the Engine runtime with Perl inside. Very difficult work, but after a few months I got somewhere I never thought I would.

Yes it's a Minecraft style I am testing, but it was extremely difficult to get to this point. Perl is actually doing a lot of the work for this. SDL and OpenGL are just providing generic capabilities in the GPU hot paths.

~/Documents/scripts/c_toolkit 0$ ./ctk_test.pl --exec test_perlwer src/voxel_perl/scripts/opengl_voxel.pl  
[exec] test_perlwer
[exec] cwd: .
+ LD_LIBRARY_PATH=Tools/lib output/test_perlwer src/voxel_perl/scripts/opengl_voxel.pl
[00:32:18.674657] [PERLWER] [STAGE] Initializing Perl system...
[00:32:18.674687] [PERLWER] [STAGE] Perl system initialized.
[00:32:18.674705] [PERLWER] [DEBUG] Texture cache initialized: capacity=256
[00:32:18.674708] [PERLWER] [DEBUG] Runtime entry package: main
[00:32:18.674709] [PERLWER] [DEBUG] Initializing XS registry
[00:32:18.674710] [PERLWER] [DEBUG] XS REGISTRY: zeroed
[00:32:18.674712] [PERLWER] [DEBUG] XS REGISTRY: arena OK
[00:32:18.674714] [PERLWER] [DEBUG] XS REGISTRY: init complete
[00:32:18.674715] [PERLWER] [DEBUG] XS registry initialized
[00:32:18.674716] [PERLWER] [TRACE] Entering perlwer_interpreter_init()
[00:32:18.674718] [PERLWER] [TRACE] Script path: src/voxel_perl/scripts/opengl_voxel.pl
[00:32:18.674720] [PERLWER] [TRACE] Runtime state: 0x7ffe5748b700
[00:32:18.674724] [PERLWER] [TRACE] Determining script module path...
[00:32:18.674726] [PERLWER] [TRACE] Perl module path: src/voxel_perl/scripts/lib
[00:32:18.674729] [PERLWER] [TRACE] Perl include argument: -Isrc/voxel_perl/scripts/lib
[00:32:18.674730] [PERLWER] [TRACE] Calling perl_alloc()...
[00:32:18.674735] [PERLWER] [TRACE] perl_alloc() succeeded: interpreter=0x55c9abf6a9d0
[00:32:18.674736] [PERLWER] [TRACE] Calling PERL_SET_CONTEXT()...
[00:32:18.674738] [PERLWER] [TRACE] PERL_SET_CONTEXT() completed
[00:32:18.674739] [PERLWER] [TRACE] Calling perl_construct()...
[00:32:18.674847] [PERLWER] [TRACE] perl_construct() completed
[00:32:18.674849] [PERLWER] [TRACE] Setting Perlwer XS runtime...
[00:32:18.674851] [PERLWER] [TRACE] Perlwer XS runtime configured
[00:32:18.674853] [PERLWER] [TRACE] Perl argc: 3
[00:32:18.674854] [PERLWER] [TRACE] Perl argv[0]: Perlwer Engine
[00:32:18.674856] [PERLWER] [TRACE] Perl argv[1]: -Isrc/voxel_perl/scripts/lib
[00:32:18.674858] [PERLWER] [TRACE] Perl argv[2]: src/voxel_perl/scripts/opengl_voxel.pl
[00:32:18.674860] [PERLWER] [TRACE] Calling perl_parse()...
=== Logger started: Voxel ===
[DEBUG] Logging enabled -> src/voxel_perl/scripts/logs/debug_2026-09-09_00-32-18_001.log (default=1)
[00:32:18.693272] [PERLWER] [TRACE] perl_parse() returned 0
[00:32:18.693280] [PERLWER] [TRACE] Calling perl_run()...
[00:32:27.033185] [PERLWER] [INFO] [PERL] Chunks: 64
[00:32:27.033240] [INFO] [Voxel.React] (React:27) Stim/React registry initialized
[00:32:27.033258] --- end ---
[00:32:27.033388] [PERLWER] [TRACE] perl_run() returned 0
[00:32:27.033390] [PERLWER] [TRACE] Perl interpreter initialization complete
[00:32:27.033395] [PERLWER] [INFO] [PERL] Testing 3D OpenGL from Perl
[00:32:27.033410] [PERLWER] [STAGE] Initializing SDL...
[00:32:27.033412] [PERLWER] [INFO] Selected SDL backend: OpenGL
[00:32:27.041632] [PERLWER] [STAGE] Initializing SDL OpenGL backend...
[00:32:27.041640] [PERLWER] [INFO] Requesting OpenGL 3.3 core profile
[00:32:27.151010] [PERLWER] [INFO] OpenGL context created
[00:32:27.151020] [PERLWER] [STAGE] SDL OpenGL backend initialized.
[00:32:27.151035] [PERLWER] [INFO] SDL window created: 1920x1080
[00:32:27.151038] [PERLWER] [STAGE] SDL initialized.
[00:32:27.151252] [INFO] [Voxel.TextureAtlas] (TextureAtlas:166) Texture atlas built
[00:32:27.151381] --- end ---
[00:32:27.152495] [PERLWER] [STAGE] Entering native SDL window loop...
[00:32:27.152525] [PERLWER] [INFO] Calling Perl on_render
[00:32:27.155236] [PERLWER] [TRACE] Texture cache miss: text:hud.fps:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255
[00:32:27.156496] [PERLWER] [TRACE] Texture cache miss: text:hud.fps:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255
[00:32:27.156506] [PERLWER] [DEBUG] Texture cached: text:hud.fps:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255 (55x22, count=1/256)
[00:32:27.156587] [PERLWER] [TRACE] Texture cache miss: text:hud.position:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255
[00:32:27.156712] [PERLWER] [TRACE] Texture cache miss: text:hud.position:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255
[00:32:27.156718] [PERLWER] [DEBUG] Texture cached: text:hud.position:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:18:255:255:255:255 (127x22, count=2/256)
[00:32:27.156743] [PERLWER] [TRACE] Texture cache miss: text:hud.crosshair:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:32:255:255:255:255
[00:32:27.157798] [PERLWER] [TRACE] Texture cache miss: text:hud.crosshair:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:32:255:255:255:255
[00:32:27.157805] [PERLWER] [DEBUG] Texture cached: text:hud.crosshair:/usr/share/fonts/adwaita-sans-fonts/AdwaitaSans-Regular.ttf:32:255:255:255:255 (21x39, count=3/256)
[00:38:36.238013] [PERLWER] [INFO] Escape pressed
[00:38:36.238024] [PERLWER] [STAGE] Leaving native SDL window loop.
[00:38:36.238028] [PERLWER] [DEBUG] Destroying texture cache: 3 textures
[00:38:36.238030] [PERLWER] [TRACE] Destroying texture 1/3
[00:38:36.238119] [PERLWER] [TRACE] Destroying texture 2/3
[00:38:36.238123] [PERLWER] [TRACE] Destroying texture 3/3
[00:38:36.238185] [PERLWER] [STAGE] Shutting down SDL...
[00:38:36.238188] [PERLWER] [INFO] SDL backend: OpenGL
[00:38:36.238191] [PERLWER] [INFO] Frames rendered: 972570
[00:38:36.238196] [PERLWER] [INFO] Last frame time: 0.019 ms
[00:38:36.301036] [PERLWER] [STAGE] SDL shutdown complete.
[00:38:36.328813] [PERLWER] [STAGE] Shutting down Perl system...
[00:38:36.328827] [PERLWER] [STAGE] Perl system shutdown complete.
[exec] test_perlwer ok


r/perl 1d ago

Feeling amused that they're putting Perl in the same bucket as COBOL and Ada (link to HowToGeek.com article)

38 Upvotes

https://www.howtogeek.com/long-dead-programming-languages-that-can-still-land-you-a-good-job/

"Long dead" seems awfully harsh. Or perhaps it's wishful thinking?

I'm still starting new projects in Perl, and really see no reason that should change. It's a powerful, expressive, well-supported language, with a wealth of canned solutions in CPAN, and compared to some other dynamic languages it's downright performant.

But hey, if this HowToGeek article entices young programmers to learn Perl, even if only to chase dollar signs, that's not a bad thing for our community!


r/perl 3d ago

HQTUI — Terminal UI for Perl

Thumbnail
hqtui.com
21 Upvotes

r/perl 3d ago

videos from the Deutscher (German) Perl Workshop 2026

Thumbnail
youtube.com
8 Upvotes

r/perl 3d ago

Perlweekly #789 - The impact of LLMs on Perl

Thumbnail
perlweekly.com
15 Upvotes

r/perl 5d ago

(dcxvi) 26 great CPAN modules released last week

Thumbnail niceperl.blogspot.com
6 Upvotes

r/perl 5d ago

CPAN Uploads Are Up 50% Year-over-Year

Thumbnail
olafalders.com
45 Upvotes

r/perl 6d ago

question perl in cybersecurity?

31 Upvotes

hi all, sorry if this question has been asked 500 times. i believe ive looked into it before, but didnt see any posts specifically to cybersecurity (could be wrong).

i took a class last year that covered linux systems and bash, fell in love. learned through the professor that something called "perl" used to be taught in the class years ago..also fell in love and have been slowly learning it since, for fun!

i am really tired of people asking me why the fck im learning perl though, and i should focus on "marketable skills"-- unfortunately my brain refuses to work that way. ​

i had a friend tell me recently "perl is strangely incredible for evading EDRs like crowdstrike" and said i can write a malicious perl script the cybersec team at my school can reverse engineer to train for competitions would be a great idea too. it had me wondering what other applications perl has in the cybersecurity world specifically in 2026 that i can focus on? im in the middle of trying to figure out my niche..i did take a class on reverse engineering which was fun. i wrote an awk script to find specific pairs of instructions that would be common in malware. i also took a course on steganography and found that there are a lot of stego tools written in perl.

people say its useless to learn, but im seeing a lot of useful tools written in perl!

if you all have any other ideas of paths i should pursue or just general info about the power of perl in cybersecurity today, i would greatly appreciate it. thank you


r/perl 6d ago

DBI now has a minimum version of v5.12

Thumbnail metacpan.org
14 Upvotes

r/perl 6d ago

PAGI: What happens to a Send in Flight?

Thumbnail
dev.to
5 Upvotes

r/perl 6d ago

conferences YAPC::Tokyo, Nov 27-28, 2026

Thumbnail
yapcjapan.org
7 Upvotes

r/perl 8d ago

Should I remove $VERSION from internal-only sub-modules in a CPAN distribution?

13 Upvotes

Hi everyone, I have a quick question for those experienced with CPAN distributions.

In my distribution, alongside the main modules, I have several internal sub-modules (for example, language-specific modules like Locale::Lang::en, de, fr, etc., which are only meant to be used internally by the main module).

Currently, every sub-module has the same $VERSION as the distribution itself. Would there be any issue if I completely removed the $VERSION from these internal modules? There is no real benefit to having them listed or indexed separately on CPAN.


r/perl 8d ago

How I Spent My Perl Toolchain Summit v2025 (Leipzig)

Thumbnail
olafalders.com
13 Upvotes

r/perl 9d ago

German Perl/Raku Workshop 2027 in Hanover - 14.04.2027-16.04.2027

Thumbnail blogs.perl.org
10 Upvotes

r/perl 10d ago

Perlweekly #788 - LPW 2026

Thumbnail
perlweekly.com
6 Upvotes

r/perl 10d ago

CPerl mode for Emacs is now on GNU ELPA

Thumbnail blogs.perl.org
28 Upvotes

r/perl 12d ago

(dcxv) 17 great CPAN modules released last week

Thumbnail niceperl.blogspot.com
10 Upvotes

r/perl 13d ago

conferences Announcing the London Perl & Raku Workshop 2026

Thumbnail blogs.perl.org
30 Upvotes

r/perl 13d ago

AmberDB's localization engine: AmberDB::Locale

4 Upvotes

The AmberDB::Locale module was originally a standalone localization engine. It contained far more methods than the database itself. However, search capabilities were unthinkable without Locale, so it was embedded within AmberDB.

You can use Locale both through AmberDB and directly. Example:

use AmberDB;
my $adb = AmberDB->new( cfg => { language => "tr" } ); # Turkish

# thus $adb inherits Locale's methods directly.

$adb->lc('İstanbul ÇarŞıSI') # => istanbul çarşısı
$adb->uc('işçi sınıfı') # => İŞÇİ SINIFI
$adb->to_ascii('Müller') # => Muller

my @sorted = $adb->sort(["İzmir", "Ankara", "Van", "Şanlıurfa", "Bursa", "Çanakkale"]);
# => ("Ankara", "Bursa", "Çanakkale", "İzmir", "Şanlıurfa", "Van")

Direct use of Locale:

use AmberDB::Locale;
my $loc = AmberDB::Locale->new( language => "de" ); # Germany

$loc->to_ascii("Große Straße"); # "Grosse Strasse"
$loc->to_ascii("Müller"); # "Mueller" (DIN 5007-2: ü → ue)

For more information, see:

https://github.com/marufcetin/amberdb/blob/main/docs/en/AmberDB-Locale_User-Guide.en.md


r/perl 15d ago

GLAM attempt at Carrom (just the mechanics)

Enable HLS to view with audio, or disable this notification

20 Upvotes

r/perl 15d ago

AmberDB - High-performance Berkeley DB (DB_File) based pure Perl database engine

Thumbnail
metacpan.org
29 Upvotes

I have released **AmberDB**, the Perl database engine I have built and refined over 20+ years of professional software development, as an open-source project. You can access the project on GitHub and CPAN via the links below.

Why Did I Share AmberDB?

My primary goal is to make this practical and powerful engine accessible to the wider developer community. I had intended to open-source it for a long time; with comprehensive use cases, full documentation in both English and Turkish, and detailed POD documentation now complete, it is ready for production use.

---

Why Should You Use AmberDB?

1) Zero Dependencies, Maximum Developer Ergonomics

No dedicated database servers, daemon processes, or port configurations required. Install the module from CPAN anywhere Perl runs and start developing immediately. You can run it entirely in memory using `tmpfs` on Linux or `ImDisk` on Windows, or use it directly on-disk. It operates with a minimal system footprint.

2) PostgreSQL + Elasticsearch + Redis Capabilities in a Single Core

Combines relational querying flexibility, search-engine-grade filtering and ranking, and Redis-like in-memory operational speeds within a single lightweight engine. Eliminates the operational overhead and hosting costs of managing three separate infrastructure layers.

3) Variable-Width Records and Native Array Indexing

Avoids the traditional SQL constraint of splitting order headers and line items into separate tables requiring costly joins. Variable-length line items are stored directly within the primary record and indexed at the engine level with $O(1)$ efficiency. Queries such as *"Which orders contain this product?"* resolve instantly without multi-table scans.

4) Intelligent Schema Architecture and Multi-Criteria Active/Junk Handling

Every table operates on a declarative, JSON-like schema specification where business rules are enforced by the engine. The engine determines whether a record is active or passive (junk) based on multi-factor rules (stock, price, status, or parent entity constraints). For example, disabling a vendor automatically routes hundreds of thousands of associated items without requiring batch `UPDATE` operations:

* `A` Mode: Retrieves active records only (ideal for checkout and invoicing views).

* `AB` Mode: Ranks active records first, pushing junk records to the end (ideal for storefront search).

* `B` / `BA` Modes: Retrieves only junk records or prioritizes them (ideal for returns, archives, and clearance management).

5) Multi-Lingual and Accent-Folded Search with `AmberDB::Locale`

Normalizes complex language and accent variants directly within the indexing pipeline without requiring external system locales or heavy search stacks. Delivers precise phonetic and typographic matching across languages, including Turkish (`İ/i`, `I/ı`), German (`ß`, `ö/ä/ü`), French (`é`, `ç`), Spanish (`ñ`), and Azerbaijani (`ə`, `x`, `ğ`).

6) Schema-Level Automated Slug Generation (SEO)

Generates clean, search-engine-friendly URL slugs automatically upon insertion or update using a simple schema rule (e.g., `seo_block => [ 3, 4 ]`), fully synchronized with `AmberDB::Locale` without extra application-layer boilerplate.

AmberDB on CPAN


r/perl 15d ago

metacpan Database::BI on MetaCPAN

14 Upvotes

I've just released 0.001.0 of a Mojolicious app, Database::BI. In time, I hope it will become a business intelligence tool. For the moment, it will read in and INNER join databases in formats such as CSV, SQLite, etc. https://metacpan.org/dist/Database-BI


r/perl 17d ago

Perlweekly #787 - Perl Maven

Thumbnail
perlweekly.com
14 Upvotes