http://qs321.pair.com?node_id=11104448

didiw has asked for the wisdom of the Perl Monks concerning the following question:

Hello,

I want to write a script reacting on specific ipower events on dbus. Can someone please provide an example without polling dbus all the time=.

I thought using net::dbus::reactor and the add_read method seems the way to go, but I have no idea, what to do with the fd variable that is the first argument to add_read, because it is not explanined in the man page.

I also will stick to another other method, if it is working.

Anyway, I would like to have an example of what this file descriptor is used for.

Thanks in advance

Didiw

Replies are listed 'Best First'.
Re: net::dbus example
by daxim (Curate) on Aug 16, 2019 at 10:41 UTC
    another other method, if it is working
    Run dbus-monitor and it will react for you. Small stand-alone example:
    dbus-monitor --system "type='signal',sender='org.freedesktop.UDisk +s2',interface='org.freedesktop.DBus.Properties'" | perl -lne' if (/^\s+ ([[:xdigit:]]{2} \s)+/msx) { $r .= $_; } elsif (/\s+\]/ && $r) { my $mount = join "", map { chr hex $_ } grep { !!$_ && $_ +ne "00" } split /\s+/, $r; system "xdg-open", $mount; $r = ""; } '