Perl is growing and adapting to the modern times, just like a new shiny Plug-In Hybrid car. Plug-in hybrid cars have the best of both worlds, an electric motor that has an average range of 20-60 miles and after its range is depleted it goes on the good old reliable gas motor for a few hundred miles.
Perl has many new shiny tech ( think of this as the Electric motor side of the Plug-In Hybrid car ) like Dancer2, Mojolicious , Starman and now COR which is a new OO system that is part of the language ( and many other cool new cpan modules that I might have missed * feel free to share your favorite new cpan module in the comments)
Perl has done a good job at keeping backwards compatibility ( now think of this as the gas engine side of the plugin hybrid car ) where many companies can still reliably run its perl code ( even after upgrading perl and obviously a few tweaks in the codebase here and there )
The Perl community is still active and its cpan modules continue to be maintained. Yes we have experienced a shrinking in the Perl community but the community has maintained a focus on improving the core modules that are shipped in the language and has paid close attention to widely used cpan modules ( read up on cpan river model - neilb.org/2015/04/20/river-of-… )
If you used to write Perl code or your curious about it then this is the best time to give Perl 5.40 a try and play around with some of its new web frameworks, cpan libraries and its new OO system COR.
submitted by /u/Itcharlie
[link] [comments]
Those who've been around long enough know that the use of programming languages was almost a religion a few years ago. For example, the .NET community made no secret of being a sect that branded other technologies as the devil's work. Admittedly, the Llama book was also considered a bible.
Until 20 years ago, Perl was regarded as an elite technology that one could boast about even barely mastering. Getting started with Perl was and still is tough and requires motivation. The reward for building Perl skills often comes years later when you calmly realize that even 10-year-old scripts still perform their duties perfectly - despite multiple system environment updates. Generally, even unoptimized Perl programs run more efficiently than new developments with technologies sold to us as the "hot shit."
One of Perl's top application areas is high-performance and robust web applications in mod_perl/2. To my knowledge, there's no comparable flexible programming language that can interact so closely with the web server and intervene in every layer of the delivery process. The language is mature, balanced, and the syntax is always consistent - at least for the Perl interpreter 😉 If you go to the official mod_perl page (perl.apache.org) in 2024, it recommends a manual written over 20 years ago, and even the link no longer works.
As a Perl enthusiast from the get-go and a full-stack developer, I feel today that - albeit reluctantly - I need to consider a technology switch. Currently, I'm still developing with mod_perl/2 and Perl Mason. As long as I'm working on interface projects, I'm always ahead of the game and can deliver everything in record time. However, when it comes to freelance projects or a new job, it's almost hopeless to bring in Perl experience, especially in Europe.
Throughout my career, I've also used other technologies such as Java Struts, PHP, C/C++, Visual Basic .NET, and I'd better not mention COBOL-85. I've always come back to Perl because of its stability. But I'm noticing that the language is effectively dead and hardly receives any updates or is talked about much. If I were forced to make a technology switch for developing full-stack applications, I would switch to React or Django. It's a shame.
submitted by /u/a430
[link] [comments]
I have been a Perl guy for 30+ years and have had the great idea to upgrade the Perl version of my large Perl APP to 5.40; after a lot of fiddeling around and overriding some Makefile.PL files I got the code and all required libraries to work on an AlmaLinux 9.4. Hoewever I am stuck on getting it to run locally on MacOS 14.5.
The two libraries currently roadblocking are Net::SSL and DBD::MariaDB. I am not fluent enough in C to understand how and if I can get things sorted; anyone able to help? Full compile errors below.
Net::SSL
cpanm (App::cpanminus) 1.9018 on perl 5.040000 built for darwin-2level Work directory is /Users/administrator/.cpanm/work/1721974215.35063 You have make /usr/bin/make You have LWP: 6.77 You have /usr/bin/tar: bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 You have /usr/bin/unzip Searching Net::SSL () on cpanmetadb ... --> Working on Net::SSL Fetching http://www.cpan.org/authors/id/N/NA/NANIS/Crypt-SSLeay-0.72.tar.gz -> OK Unpacking Crypt-SSLeay-0.72.tar.gz Entering Crypt-SSLeay-0.72 Checking configure dependencies from META.json Checking if you have Getopt::Long 0 ... Yes (2.57) Checking if you have ExtUtils::CBuilder 0.280205 ... Yes (0.280240) Checking if you have Try::Tiny 0.19 ... Yes (0.31) Checking if you have Path::Class 0.26 ... Yes (0.37) Configuring Crypt-SSLeay-0.72 Running Makefile.PL Argument "pro" isn't numeric in numeric ge (>=) at /usr/local/lib/perl5/5.40.0/ExtUtils/MM_Unix.pm line 47. Found libraries 'ssl, crypto, z' *** THIS IS NOT AN ERROR, JUST A MESSAGE FOR YOUR INFORMATION *** Do you really need Crypt::SSLeay? Starting with version 6.02 of LWP, https support was unbundled into LWP::Protocol::https. This module specifies as one of its prerequisites IO::Socket::SSL which is automatically used by LWP::UserAgent unless this preference is overridden separately. IO::Socket::SSL is a more complete implementation, and, crucially, it allows hostname verification. Crypt::SSLeay does not support this. At this point, Crypt::SSLeay is maintained to support existing software that already depends on it. However, it is possible that your software does not really depend on Crypt::SSLeay, only on the ability of LWP::UserAgent class to communicate with sites over SSL/TLS. If are using version LWP 6.02 or later, and therefore have installed LWP::Protocol::https and its dependencies, and do not explicitly use Net::SSL before loading LWP::UserAgent, or override the default socket class, you are probably using IO::Socket::SSL and do not really need Crypt::SSLeay. Before installing Crypt::SSLeay, you may want to try specifying a dependency on LWP::Protocol::https. ================================================================================ Output from '/Users/administrator/.cpanm/work/1721974215.35063/Crypt-SSLeay-0.72/openssl-version': OpenSSL 3.3.1 4 Jun 2024 30300010 ================================================================================ Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Crypt::SSLeay Writing MYMETA.yml and MYMETA.json -> OK Checking dependencies from MYMETA.json ... Checking if you have Try::Tiny 0.19 ... Yes (0.31) Checking if you have Test::More 0.19 ... Yes (1.302199) Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.70) Checking if you have LWP::Protocol::https 6.02 ... Yes (6.14) Checking if you have MIME::Base64 0 ... Yes (3.16_01) Building and testing Crypt-SSLeay-0.72 cp lib/Crypt/SSLeay/Conn.pm blib/lib/Crypt/SSLeay/Conn.pm cp SSLeay.pm blib/lib/Crypt/SSLeay.pm cp lib/Crypt/SSLeay/Err.pm blib/lib/Crypt/SSLeay/Err.pm cp lib/Crypt/SSLeay/MainContext.pm blib/lib/Crypt/SSLeay/MainContext.pm cp lib/Crypt/SSLeay/Version.pm blib/lib/Crypt/SSLeay/Version.pm cp lib/Net/SSL.pm blib/lib/Net/SSL.pm cp lib/Crypt/SSLeay/CTX.pm blib/lib/Crypt/SSLeay/CTX.pm cp lib/Crypt/SSLeay/X509.pm blib/lib/Crypt/SSLeay/X509.pm Running Mkbootstrap for SSLeay () chmod 644 "SSLeay.bs" "/usr/local/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- SSLeay.bs blib/arch/auto/Crypt/SSLeay/SSLeay.bs 644 "/usr/local/bin/perl" "/usr/local/lib/perl5/5.40.0/ExtUtils/xsubpp" -typemap '/usr/local/lib/perl5/5.40.0/ExtUtils/typemap' -typemap '/Users/administrator/.cpanm/work/1721974215.35063/Crypt-SSLeay-0.72/typemap' SSLeay.xs > SSLeay.xsc mv SSLeay.xsc SSLeay.c cc -c -fno-common -DPERL_DARWIN -mmacosx-version-min=14.5 -DNO_THREAD_SAFE_QUERYLOCALE -DNO_POSIX_2008_LOCALE -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -Wno-error=implicit-function-declaration -O3 -DVERSION=\"0.72\" -DXS_VERSION=\"0.72\" "-I/usr/local/lib/perl5/5.40.0/darwin-2level/CORE" SSLeay.c SSLeay.xs:152:31: warning: call to undeclared function 'SSLv3_client_method'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] ctx = SSL_CTX_new(SSLv3_client_method()); ^ SSLeay.xs:152:31: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') [-Wint-conversion] ctx = SSL_CTX_new(SSLv3_client_method()); ^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/openssl/ssl.h:1634:47: note: passing argument to parameter 'meth' here __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); ^ SSLeay.xs:157:31: warning: call to undeclared function 'SSLv2_client_method'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration] ctx = SSL_CTX_new(SSLv2_client_method()); ^ SSLeay.xs:157:31: error: incompatible integer to pointer conversion passing 'int' to parameter of type 'const SSL_METHOD *' (aka 'const struct ssl_method_st *') [-Wint-conversion] ctx = SSL_CTX_new(SSLv2_client_method()); ^~~~~~~~~~~~~~~~~~~~~ /usr/local/include/openssl/ssl.h:1634:47: note: passing argument to parameter 'meth' here __owur SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); ^ 2 warnings and 2 errors generated. make: *** [SSLeay.o] Error 1 -> FAIL Installing Net::SSL failed. See /Users/administrator/.cpanm/work/1721974215.35063/build.log for details. Retry with --force to force install it.
and DBD::MariaDB (mariadb-devel is installed)
cpanm (App::cpanminus) 1.9018 on perl 5.040000 built for darwin-2level Work directory is /Users/administrator/.cpanm/work/1721974660.39142 You have make /usr/bin/make You have LWP: 6.77 You have /usr/bin/tar: bsdtar 3.5.3 - libarchive 3.5.3 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 You have /usr/bin/unzip Searching DBD::MariaDB () on cpanmetadb ... --> Working on DBD::MariaDB Fetching http://www.cpan.org/authors/id/P/PA/PALI/DBD-MariaDB-1.23.tar.gz -> OK Unpacking DBD-MariaDB-1.23.tar.gz Entering DBD-MariaDB-1.23 Checking configure dependencies from META.json Checking if you have utf8 0 ... Yes (1.25) Checking if you have DBI 1.608 ... Yes (1.643) Checking if you have strict 0 ... Yes (1.13) Checking if you have ExtUtils::MakeMaker 6.58 ... Yes (7.70) Checking if you have Data::Dumper 0 ... Yes (2.189) Checking if you have Getopt::Long 0 ... Yes (2.57) Checking if you have Devel::CheckLib 1.12 ... Yes (1.16) Checking if you have File::Spec 0 ... Yes (3.90) Checking if you have Config 0 ... Yes (5.040000) Checking if you have warnings 0 ... Yes (1.70) Configuring DBD-MariaDB-1.23 Running Makefile.PL Argument "pro" isn't numeric in numeric ge (>=) at /usr/local/lib/perl5/5.40.0/ExtUtils/MM_Unix.pm line 47. PLEASE NOTE: For 'make test' to run properly, you must ensure that the database user 'root' can connect to your MariaDB or MySQL server and has the proper privileges that these tests require such as 'drop table', 'create table', 'drop procedure', 'create procedure' as well as others. mysql> grant all privileges on test.* to 'root'@'localhost' identified by 's3kr1t'; For MySQL 8 it is needed to use different syntax: mysql> create user 'root'@'localhost' identified by 's3kr1t'; mysql> grant all privileges on test.* to 'root'@'localhost'; You can also optionally set the user to run 'make test' with: perl Makefile.PL --testuser=username I will use the following settings for compiling and testing: cflags (mysql_config) = -I/usr/local/Cellar/mariadb/11.4.2/include/mysql -I/usr/local/Cellar/mariadb/11.4.2/include/mysql/mysql libs (mysql_config) = -L/usr/local/Cellar/mariadb/11.4.2/lib/ -lmariadb mysql_config (guessed ) = mariadb_config testauthplugin (default ) = testdb (default ) = test testhost (default ) = testpassword (default ) = testport (default ) = testsocket (default ) = testuser (guessed ) = root To change these settings, see 'perl Makefile.PL --help' and 'perldoc DBD::MariaDB::INSTALL'. Checking if libs and header files are available for compiling... Checking if correct version of MariaDB or MySQL client is present... Looks good. Embedded server: not supported by client library WARNING: Older versions of ExtUtils::MakeMaker may errantly install README.pod as part of this distribution. It is recommended to avoid using this path in CPAN modules. Client library deinitialize OpenSSL library functions: yes Checking if your kit is complete... Looks good Using DBI 1.643 (for perl 5.040000 on darwin-2level) installed in /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/ Generating a Unix-style Makefile Writing Makefile for DBD::MariaDB Writing MYMETA.yml and MYMETA.json -> OK Checking dependencies from MYMETA.json ... Checking if you have Test::More 0.90 ... Yes (1.302199) Checking if you have bigint 0 ... Yes (0.67) Checking if you have lib 0 ... Yes (0.65) Checking if you have DynaLoader 0 ... Yes (1.56) Checking if you have Data::Dumper 0 ... Yes (2.189) Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.70) Checking if you have warnings 0 ... Yes (1.70) Checking if you have DBI::Const::GetInfoType 0 ... Yes (2.008697) Checking if you have Encode 0 ... Yes (3.21) Checking if you have vars 0 ... Yes (1.05) Checking if you have constant 0 ... Yes (1.33) Checking if you have Time::HiRes 0 ... Yes (1.9777) Checking if you have B 0 ... Yes (1.89) Checking if you have Test::Deep 0 ... Yes (1.204) Checking if you have FindBin 0 ... Yes (1.54) Checking if you have DBI 1.608 ... Yes (1.643) Checking if you have File::Temp 0 ... Yes (0.2311) Checking if you have strict 0 ... Yes (1.13) Checking if you have utf8 0 ... Yes (1.25) Building and testing DBD-MariaDB-1.23 cp lib/DBD/MariaDB.pm blib/lib/DBD/MariaDB.pm cp lib/DBD/MariaDB.pod blib/lib/DBD/MariaDB.pod cp lib/DBD/MariaDB/INSTALL.pod blib/lib/DBD/MariaDB/INSTALL.pod cp README.pod blib/lib/DBD/MariaDB/README.pod Running Mkbootstrap for MariaDB () chmod 644 "MariaDB.bs" "/usr/local/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- MariaDB.bs blib/arch/auto/DBD/MariaDB/MariaDB.bs 644 "/usr/local/bin/perl" -p -e "s/~DRIVER~/MariaDB/g" /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/Driver.xst > MariaDB.xsi "/usr/local/bin/perl" "/usr/local/lib/perl5/5.40.0/ExtUtils/xsubpp" -typemap '/usr/local/lib/perl5/5.40.0/ExtUtils/typemap' MariaDB.xs > MariaDB.xsc Warning: duplicate function definition 'do' detected in MariaDB.xs, line 104 Warning: duplicate function definition 'rows' detected in MariaDB.xs, line 231 Warning: duplicate function definition 'last_insert_id' detected in MariaDB.xs, line 250 mv MariaDB.xsc MariaDB.c cc -c -I/usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI -I/usr/local/Cellar/mariadb/11.4.2/include/mysql -I/usr/local/Cellar/mariadb/11.4.2/include/mysql/mysql -DHAVE_DBI_1_634 -DHAVE_DBI_1_642 -DHAVE_PROBLEM_WITH_OPENSSL -fno-common -DPERL_DARWIN -mmacosx-version-min=14.5 -DNO_THREAD_SAFE_QUERYLOCALE -DNO_POSIX_2008_LOCALE -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -Wno-error=implicit-function-declaration -O3 -DVERSION=\"1.23\" -DXS_VERSION=\"1.23\" "-I/usr/local/lib/perl5/5.40.0/darwin-2level/CORE" MariaDB.c In file included from MariaDB.c:186: /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/Driver_xst.h:33:5: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] EXTEND(SP, params); ^~~~~~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/pp.h:460:25: note: expanded from macro 'EXTEND' # define EXTEND(p,n) STMT_START { \ ^~~~~~~~~~ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/dbipport.h:4185:31: note: expanded from macro 'STMT_START' # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ ^ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/Driver_xst.h:33:5: note: '{' token is here EXTEND(SP, params); ^~~~~~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/pp.h:460:36: note: expanded from macro 'EXTEND' # define EXTEND(p,n) STMT_START { \ ^ In file included from MariaDB.c:186: /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/Driver_xst.h:33:5: warning: '}' and ')' tokens terminating statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] EXTEND(SP, params); ^~~~~~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/pp.h:466:25: note: expanded from macro 'EXTEND' } STMT_END ^ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/Driver_xst.h:33:5: note: ')' token is here EXTEND(SP, params); ^~~~~~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/pp.h:466:27: note: expanded from macro 'EXTEND' } STMT_END ^~~~~~~~ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/dbipport.h:4186:25: note: expanded from macro 'STMT_END' # define STMT_END ) ^ ^ ./MariaDB.xsi:214:39: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } ^~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/XSUB.h:340:27: note: expanded from macro 'XSRETURN_EMPTY' #define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END ^~~~~~~~~~ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/dbipport.h:4185:31: note: expanded from macro 'STMT_START' # define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */ ^ ./MariaDB.xsi:214:39: note: '{' token is here if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } ^~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/XSUB.h:340:38: note: expanded from macro 'XSRETURN_EMPTY' #define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END ^ ./MariaDB.xsi:214:39: warning: '(' and '{' tokens introducing statement expression appear in different macro expansion contexts [-Wcompound-token-split-by-macro] if (is_selectrow_array) { XSRETURN_EMPTY; } else { XSRETURN_UNDEF; } ^~~~~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/XSUB.h:340:57: note: expanded from macro 'XSRETURN_EMPTY' #define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END ^~~~~~~~~~~ /usr/local/lib/perl5/5.40.0/darwin-2level/CORE/XSUB.h:325:5: note: expanded from macro 'XSRETURN' STMT_START { \ ^~~~~~~~~~ /usr/local/lib/perl5/site_perl/5.40.0/darwin-2level/auto/DBI/dbipport.h:4185:31: note: expanded from macro 'STMT_START' Failed 6/7 subtests Can't use an undefined value as a subroutine reference at /usr/local/lib/perl5/5.40.0/TAP/Harness.pm line 612. make: *** [test_dynamic] Error 255
submitted by /u/kosaromepr
[link] [comments]
I am new to this subreddit, but not new to Perl, though I've been flirting with Python for a little over two years so I'm a little out of the loop.
If I wanted to create a RESTful API using Catalyst and have my Swagger docs generated automatically, are there any toolchain recommendations that anyone can make?
Thanks.
submitted by /u/Biggity_Biggity_Bong
[link] [comments]
This might be Perl/docker-perl#161 but if I filed this in the wrong place, let me know. Keeping these things current is the sort of thing I'd pay for.
Pulling perl images locally give the same warnings for old perl versions, although my local docker will still run them:
$ docker pull perl:5.14 5.14: Pulling from library/perl Image docker.io/library/perl:5.14 uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
Here's what I'm getting today from GitHub Actions. Sure, I see all sort of warnings to upgrade node, but nothing about this change:
/usr/bin/docker pull perl:5.14 5.14: Pulling from library/perl [DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release. Suggest the author of docker.io/library/perl:5.14 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/ Warning: Docker pull failed with exit code 1, back off 5.148 seconds before retry. /usr/bin/docker pull perl:5.14 5.14: Pulling from library/perl [DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release. Suggest the author of docker.io/library/perl:5.14 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/ Warning: Docker pull failed with exit code 1, back off 4.06 seconds before retry. /usr/bin/docker pull perl:5.14 5.14: Pulling from library/perl [DEPRECATION NOTICE] Docker Image Format v1 and Docker Image manifest version 2, schema 1 support is disabled by default and will be removed in an upcoming release. Suggest the author of docker.io/library/perl:5.14 to upgrade the image to the OCI Format or Docker Image manifest v2, schema 2. More information at https://docs.docker.com/go/deprecated-image-specs/ Error: Docker pull failed with exit code 1
From this snippet in my GitHub workflows (e.g. .github/workflows/linux.yml)
matrix: os: - ubuntu-22.04 perl-version: - '5.8' - '5.10' - '5.12' - '5.14' - '5.16' - '5.18' - '5.20' - '5.22' - '5.24' - '5.26' - '5.28' - '5.30' - '5.32' - '5.34' - '5.36' - 'latest' container: image: perl:${{ matrix.perl-version }}
submitted by /u/briandfoy
[link] [comments]
I threw together a quick proof of concept for myself writing out a very simple Entity Component System (ECS) and implementing the flocking simulation on top of it. I liked how it came together so well I wrote some prose around it and decided to share. Note: this is using features from the soon-to-be-released 5.40.0 (RC1 dropped last Friday). submitted by /u/perigrin |
Hi, I recently got an offer for Senior SWE (current title at my company now) for a company that heavily utilizes Perl. I was wondering if folks from this community could offer some insight on what it's like working with Perl and also what, if any, potential long-term career implications are of becoming a Perl developer? Particularly I'm worried of pigeon-holing myself since Perl is not as heavily used in todays age and this company does not make use of modern cloud tools and deployments.
I am a Java developer (5 YOE) at a enterprise software company that is deployed in GCP. We are pretty regularly adopting new technologies so I'm gaining some valuable and relevant industry experience here but I am looking for a change and more opportunity to lead projects and mentor junior engineers.
The company seems good, great WLB, I liked the manager, and with the bonus (base is roughly the same) it would be about a ~8% TC increase plus a lot more stock (monopoly money, private RSUs).
Does anyone have experience transitioning from a Perl based company to a cloud based company with a more modern tech stack? Is this a backwards direction for me, should I continue with my Java development and instead look for opportunities that will offer more marketable skills?
Any input is appreciated, thank you for reading.
submitted by /u/Roodiestue
[link] [comments]
Mo utilities for email.
Changes for 0.02 - 2024-04-26T23:02:53+02:00
- Add tests for error parameters.
- Rewrite the tests so that the functional tests are first and then the errors.
Perl.social Code of Conduct
I've posted this on reddit and wanted a discussion here too for those not on reddit for whatever reason:
reddit.com/r/perl/comments/1bl…
The gist though is that I've gotten another request for a proper CoC/ToS that would be acceptable to the community since i've been negligent in doing so. I've decided that a slightly modified version from the mastodon CoC might be a good starting point and I'll post that content in a reply to this so that it doesn't flood everyone's feeds with a giant wall of text immediately.
So hear me out...
This idea is stupid. But on Star Trek (VOY, TNG, and DS9 at least), they measured their data as "quads". ( memory-alpha.fandom.com/wiki/Q… ). This was never defined because it's just Sci-Fi and doesn't need a real definition. But... what if they're quad-floats aka 128bit floating point values. This would mean then that all the storage could be done as LLM or other neural network style models, and vector embeddings and such. Given what we've got today with transformer style models for doing translation, chat, etc. If you had ultrapowerful computers that could do these calculations with such gigantic precision then you'd be able to store very accurate data and transform it back and forth from vector embeddings and other fancy structures. It'd enable very powerful searches, and the kind of analysis we're trying to use LLMs for and see them use in the shows when talking to the computers. This would also explain a lot about the universal translators from ENG onward, and could even help make sense of Darmok and Jalad at Tenagra. And then Voyager even has bio-neural circuitry for doing things faster, some kind of organic analog computing doing stuff "at the edge". Using weights and embeddings to do things with them and have them react by programming them with a machine learning model at each node could easily explain how that could work too.
This idea honestly feels too stupid to be real but it could explain so much.
Perl.social server upgrades
Ryan Voots
in reply to Ryan Voots • •COC/TOS
Borrowing many things from the Mastodon CoC as a astarting point (github.com/mastodon/mastodon/b…).
I am removing a few things from it, not because I don't think they're good ideas or anything but also because I want to limit the scope
of the initial discussion and the amount of work for myself as I'm still currently the only moderator but once the community there gets larger
or it changes that I'm not the only one maintaining things, we will hold another discussion about everything.
I've changed a few things also, specifically to add stronger language that any moderators
MUST document why an action was taken. This doesn't necessarily mean that I believe
that those reasons must be immediately given to an affected user, but that they must
be available when requested. Specifically I'm thinking of not informing in the context
of bots, spam, illegal or otherwise legally actionable content (i.e. something that's going to get me a subpeona or court case).
Other proposed ideas:
1) Some kind of regular discussion, maybe annually? on ToS/CoC type things
1a) The idea being that we require a regular discussion of anything that's
happened over the last time period to avoid it being possible for something
happening being "swept under the rug" or "falling through the cracks" because
it didn't get the proper time given to it previously. How this should be done
I have no good recommendations for, likely creating a group on perl.social to
host the conversation each time?
2) ?
Contributor Covenant Code of Conduct
Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Privacy
I reserve the right to collect email or other identifiable contact information,
and it will never be shared to an outside party without consent except in the case
of it being required by some legal process. If at any time perl.social becomes
a larger organization and there is a desire to change this, I will require the
removal of all such information until explicit consent is given again with such
a new policy. I don't know if there's a way I can make this legally enforcable
but I see it as something I do not own and therefore cannot ethically give it to
another party in that kind of scenario.
Both perl.social and I are located in the USA, and therefore I believe are not
directly subject to the GDPR, but as there are similar laws in other jurisdictions
even within the USA, and I basically agree with the ideas involved, I will do
whatever is reasonable feasible to follow them.
Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
and learning from the experience
community
Examples of unacceptable behavior include:
and sexual attention or advances of any kind. Consenting adults in private
should be acceptable.
without their explicit permission
professional setting
Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and MUST communicate reasons for moderation
decisions.
Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[hello@joinmastodon.org](mailto:hello@joinmastodon.org).
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series of
actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the
community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant,
version 2.1, available at
contributor-covenant.org/versi…contributor-covenant.org/versi….
And from the Mastodon code of conduct available at github.com/mastodon/mastodon/b…
Community Impact Guidelines were inspired by
Mozilla's code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
contributor-covenant.org/faqcontributor-covenant.org/faq. Translations are available at
contributor-covenant.org/trans…contributor-covenant.org/trans….