I found one other question from 2017 about accessing Linux SocketCAN sockets from Perl, but there weren't any replies that I could make sense of. One that suggested using pack/unpack to modify the socket type parameter to the IO::Socket call. I have no idea how to make use of that, but after the passage of time, I wonder if someone has come up with a more straightforward solution. Like the previous poster, I have been able to use the linux candump tool with a Perl wrapper, but I was hoping for something a little cleaner. Perl is my weapon of choice for ad hoc scripts to acquire and process data, and this is the first time I've found no direct method to do what I want it to do.
My present use case is to capture data from an Arduino sending on a MCP2515 CAnbus module and receiving on a RPi with a CANbus interface that works well in Linux as far as I can tell. In the fullness of time, I'd like to create an intelligent sniffer that can capture specific data from a busy CANbus that is part of a control system in a particle accelerator lab.