in reply to Re^3: converting from string to SCALAR when using strict "refs"
in thread converting from string to SCALAR when using strict "refs"

I tried out kyles suggestion of putting in the '/' before the 4processor but get the error message:
after call to bind cpu:WARNING:failed to bind process xxxxa0 PID 3720 +to processor SCALAR(0x15f1a8)(rcode 256) /usr/sbin/pbind: must specify at least one pid usage: /usr/sbin/pbind -b processor_id pid[/lwpids] ... /usr/sbin/pbind -U [processor_id] ... /usr/sbin/pbind -Q [processor_id] ... /usr/sbin/pbind -u pid[/lwpids] ... /usr/sbin/pbind [-q] [pid[/lwpids] ...]
The processor variable is populated in one other method too before the bind_cpu is invoked. In this case it looks for other processes and binds to the the same processor:
sub get_cpu_used_by_other_process { my $other_mgr = shift; my $proc_id = locate__process_id( $other_mgr ); my $processor = undef; my $pid = undef; my @cmd_output = `$os_command_table{$^O}{pbind} -q 2>/dev/null +`; die "ERROR:failed to retrieve the bound processors\n" unless ( + $? == 0 ); ##### increase the weight of processors based on used or not # +#### foreach ( keys %{$proc_id} ) { $pid = $$proc_id{$_}; next unless defined $pid; foreach ( @cmd_output ) { $processor = $1, return \$processor if /proces +s\s+id\s+${pid}\s*:\s*(\d+) $/; } } } }

Replies are listed 'Best First'.
Re^2: converting from string to SCALAR when using strict "refs"
by kyle (Abbot) on Jan 21, 2009 at 20:02 UTC

    OK, get_cpu_used_by_other_process really is returning a reference to a scalar. That being the case, I guess you really do need to use the backslash as I suggested in Re^3: converting from string to SCALAR when using strict "refs".

    my $processor = \`/aa/bin/get_pbind_cpus.ksh`;

    However, you might need to chomp that before doing anything with it because the backticks will give you a newline at the end of the value you're interested in.

    chomp( $$processor );

    Then your offending line 325 can be what you had originally.

    system("$os_cmd_table{$^O}{pbind} -b $$processor $$proc_id{$_} >/dev/n +ull 2>&1") if defined $$processor;

    I hope that helps.