Skip to main content






There are a lot of ::Tiny distributions on CPAN that implement the most needed features of whatever (e.g. YAML::Tiny and Module::Build::Tiny) in much smaller and faster to run-time compile modules. It seems that most of the time, accepting the reduced feature set is a good tradeoff for the reduced runtime bloat.

This got me thinking, with how massive CPAN is, containing tons of distributions that implement the same thing in different ways, often resulting in code bloat where Distribution A has dependence B that does Fubar API one way, and Distribution A also has depencency C that doesn't do Fubar API but has a test that needs Dependency D that does Fubar API another way, and so on.

Could we maybe get a "CPAN Tiny" that is a subset of CPAN without all of the massive redundancy bloat? Distributions that go into it can only use Core and/or other "CPAN Tiny" distributions and can not have redundancy. The dependency bloat is major drawback of Perl.

Sometimes to meet one dependency (especially if running tests), well over 20 dependencies with a lot of them having redundant purposes are needed. It's madness. Especially since packagers don't always properly specify runtime dependencies meaning after that big mess is installed, you find you need even more because some dependencies were left out. It's a mess that makes me want to just look for Python solutions.

submitted by /u/AnymooseProphet
[link] [comments]



Over the last two decades plus, I have used multiple queueing modules in perl. Some of them are:

I'm sure that there were others, but the are the ones that come to mind.

I am currently using Forks::Queue with a SQLite back-end in a personal application that runs in two separate processes. The first is a server that pulls URLs from the queue and downloads them using yt-dlp. The second is a client that grabs URLs from the clipboard and places them in the queue. Both processes run on the same Debian 12 instance. The two characteristics of queueing that led me to select Forks::Queue were: 1. works across processes, 2. persistent over stop/start.

In general, Forks::Queue has worked for me. In the last month or so, I have observed an annoying behavior. Maybe it existed before and I didn't remember it or maybe it is due to a few changes that I have made to add an additional capability to the application. When I first start the server, it works fine until the client loads the first entry in the queue. The server crashes when reading the queue with "I/O Possible" display on the screen. When I restart the server, it then reads the entry and processes it without problems. Subsequent entries are also processed without problems.

Through logging, I have able to localize the failure to the dequeue-nb() call that reads from the queue. Enables Forks::Queue debugging with the environment variable FORKS_QUEUE_DEBUG also does not reveal anything. Neither eval nor the new feature 'try' will catch the error. Searches in Google, none of them related to perl, suggest that the problem is somewhere in the bowels of the OS's I/O routines.

For a one off personal project, I can obviously live with this; however, everytime that I encounter it is grates on me.

As such, I am requesting recommendations from your experiences for alternatives to Forks::Queue.

The requirements are:

  1. Supports general queueing methods (a la Thread::Queue like API)
  2. Works across processes
  3. Persist over stops and starts of processes

While not pertinent to my immediate needs, I would like for it to be fairly fast. The current application has no need for speed but uses in the future could. Additionally, it would be nice if the module handled serialization and deserialization of arrays, hashes and blessed objects but this can easily be accomplished with a wrapper function.

Thanks in advance for your help! lbe

submitted by /u/LearnedByError
[link] [comments]



There is a Dancer2 application accessible through mod_proxy via Apache2. How can I access the HTTP headers from Apache in Dancer? Thanks!

submitted by /u/mestia
[link] [comments]



My wife and have a hobby-level online radio station and we use Logitech Media Server as the backend. As part of what we use we're running a plug-in called Spicefly Sugarcube, which interacts with a "brain" called MusicIP. MusicIP allows music suggestions to be called using an API, which is basically what Sugarcube is doing, and it builds a URL with the very last element being "recipe," which is a filter built into MusicIP that helps shape the direction the songs go.

The issue is I'd like to replace the recipe section of this plug in with a fixed array that cycles through to emulate a radio format clock. I realize that by doing this under the hood I lose the functionality of changing the recipes on the fly, but that's okay.

The program is driven by the plugin.pm file located here:

bitbucket.org/spicefly/sugarcu…

I know nothing about Perl so tried to have ChatGPT alter this to replace the recipe section with a fixed array, It returned the upper part of the file this way, with no other changes, and the plug in won't load like this:

#v6.01 - December 2023

#+===================+

#Licencing Requirements Removed

#Released as Open Source under the GNU General Public License v3.0

#

#In Short Summary

#Complete source code must be made available that includes all changes

#Copyright and license notices must be preserved.

#Contributors provide an express grant of patent rights.

package Plugins::SugarCube::Plugin;

# Define the recipe sequence array

my u/recipe_sequence = ('5s', '4s', '5s', '5s', '4s', '5s', '4s', '5s', '5s', '4s', '5s', '4s', '5s', '5s', '4s', '5s', '5s', '4s');

my $recipe_index = 0;

# Function to get the next recipe in sequence

sub get_next_recipe {

my $recipe = $recipe_sequence[$recipe_index];

$recipe_index = ($recipe_index + 1) % u/recipe_sequence; # Loop back to the start

return $recipe;

}

use base qw(Slim::Plugin::Base);

use strict;

use Slim::Utils::Misc;

use Slim::Utils::Prefs;

use Slim::Utils::Log;

my $log = Slim::Utils::Log->addLogCategory(

{

'category' => 'plugin.sugarcube',

# 'defaultLevel' => 'WARN',

'defaultLevel' => 'DEBUG',

'description' => getDisplayName(),

}

);

So my question is, is this possible, and is the kernel of how to make it work here, or is there a better way to do it? If you look at the original plugin.pm file you'll see how the URL is built, and I really just want the very end of the URL to be &recipe=5s or %recipe=4s depending on the sequence I enter. Any help it appreciated!

submitted by /u/typecrazy789
[link] [comments]




The URI module took a short holiday, but quickly returned. Just for giggles, I'd like to see everyone react (positivily) to u/oalders in the Github issue:

  • Can we get 100 reactions?
  • Can we get all the reactions (so, thumbs down is really just for completeness)
  • Can we star the heck out of the libperl-www repo?

There are people who take care of things so most people never notice when something goes wrong, and from the time I reported this to resolution was three hours (although the issue was already known, I think). That's some pretty good support right there, and we should fête over that.

For what it's worth, GitHub pays attention to these things. When I filed an issue about getting them to think about putting Perl in their Advisory Database, the number of reactions that issue got made them think about it (right now it's a whole process with scheduling dev time, etc). One of the ways to show that Perl is alive is to react to Perl things (um, that deserve it, not bot spam!).

submitted by /u/briandfoy
[link] [comments]



Hello,

I'm trying to install Request Tracker and in the process am receiving an error that states:

Some dependencies were missing:
DBD::mysql >= 2.1018, != 4.042 ................... MISSING

I'm lost. How to do I resolve this?

Thank you!

submitted by /u/ngrybst
[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.