RTLSDR_API int rtlsdr_open(rtlsdr_dev_t **dev, uint32_t index); # where rtlsdr_dev_t is initialized as: typedef struct rtlsdr_dev rtlsdr_dev_t; #### int rtlsdr_open(dev, index) RTLSDRDevice_T **dev uint32_t index # where RTLSDRDEVICE_T is typedef rtlsdr_dev_t RTLSDRDevice_T; #### RTLSDRDevice_T * T_PTRREF RTLSDRDevice_T ** T_PTRREF #### use SDR::RTLSDR qw(:all); # my library my $serial_number = "00000001"; # from dmesg output my $index = rtlsdr_get_index_by_serial( $serial_number ); # it returns 0, this is not an error value so I think is good my $device = rtlsdr_get_device_name( $index ); print rtlsdr_open( $device , $index) #### SDR::RTLSDR::rtlsdr_close: dev is not of type RTLSDRDevice_TPtr at sdr.pl line 7. #### print rtlsdr_open( \$device , $index)