Friday, January 27, 2012

Perl keyword 'our' doesn't work on old Perl

If you need to declare a variable in old (pre 5.6?) Perl, and can't use the 'my' keyword...


#!/usr/bin/perl -w
#
#
#
use strict;
use Getopt::Std;

our $opt_v;
getopts('v');
sub VERBOSE { $opt_v; }


This will fail:


$ ./try.pl
Use of reserved word "our" is deprecated at ./try.pl line 8.
Global symbol "$opt_v" requires explicit package name at ./try.pl line 8.
Execution of ./try.pl aborted due to compilation errors.


You can use this instead:


#!/usr/bin/perl -w
#
#
#
use strict;
use Getopt::Std;

use vars '$opt_v';
getopts('v');
sub VERBOSE { $opt_v; }


There is a discussion on what the error means at http://www.perlmonks.org/?node_id=23916

Friday, October 07, 2011

Registry entries for TheGun

TheGun is a great replacement for notepad on Windows. It's a bit funny with registering itself to open file types though, but if you add these registry entries (which expect it to be in C:\Program Files\TheGun\THEGUN.EXE) it should work the way you want it.


Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pl\OpenWithList]
"g"="THEGUN.EXE"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.txt\OpenWithList]
"g"="THEGUN.EXE"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam\MUICache]
"C:\\Program Files\\TheGun\\THEGUN.EXE"="TheGun"
"C:\\Progra~1\\TheGun\\THEGUN.EXE"="TheGun"

[HKEY_CURRENT_USER\Software\Classes\Applications\THEGUN.EXE\shell\open\command]
@="C:\\Progra~1\\TheGun\\THEGUN.EXE %1"

[HKEY_CURRENT_USER_Classes\Applications\THEGUN.EXE\shell\open\command]
@="C:\\Progra~1\\TheGun\\THEGUN.EXE %1"

Wednesday, October 05, 2011

rpm queries

The rpm options you usually need:


rpm -qa (list all packages installed
rpm -qf /path/to/file (which package provides this file)
rpm -ql (list the files in a package)



http://www.rpm.org/max-rpm/s1-rpm-query-parts.html

Friday, August 12, 2011

NIS & Automount


# vi /var/yp/etc/auto_home
# cd /var/yp
# make auto.home


To flush the old mapping on the client server:


# automount -v

Monday, August 01, 2011

Spark Timezone

To correct the timezone in Spark, create a Spark.vmoptions file (not spark.vmoptions and not Spark.vmoptions.txt) beside the Spark.exe and add this to it:

-Duser.timezone=Europe/London

then restart Spark.

Thanks to:

Comand line wrapping

If you're having trouble on Solaris with your command line wrapping at 80 characters so it starts printing again at the start of the line...
Have you logged in via a jump server and have your terminal settings configured in the first machine, which is controlling what the second machine can send back?

Tuesday, June 14, 2011

Microsoft Natural Keyboard Function Keys...

Did you know the natural keyboard 4000 has a "F-Lock" key?

http://www.ehow.com/how_6777639_enable-function-keys-microsoft-keyboard.html

Open a program that uses the function keys such as Microsoft Word or Microsoft Excel. Check your keyboard for an "F-Lock" or "Function Lock" key. This key is used to toggle function-key support; when it is toggled on, the function keys will not work.

Monday, June 13, 2011

Windows hosts file ignored

If you have already tried all of these things:

http://mihaiu.name/2005/windows-hosts-file-ignored/

If you've copied the file from somewhere else rather than opening it and pasting in entries, check the permissions on the file.
The file permissions could be wrong meaning Windows will not read it.

More reading:

http://www.bleepingcomputer.com/tutorials/tutorial52.html

Wednesday, June 01, 2011

Why does ifup eth1 make eth0 stop working?

and this was a gotcha that stole a couple of hours...

Answer... it didn't stop working, I just couldn't see it...
bringing up eth1 when I'd cloned eth0's config:


/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1


and neglected to remove this line:


GATEWAY=AA.BB.CC.DD


When eth1 came up after eth0, it would over-write the default route.
I realised what the problem was when I noticed that a terminal logged in from another host on the same subnet was still working, the one I'd been using from my desktop was being disconnected - the default gateway was obviously missing or wrong.

Before (bad):


# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 192.168.98.98 0.0.0.0 UG 0 0 0 eth1



# route add default gw 172.16.98.1


suddenly it starts working again...


# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 172.16.98.1 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.98.98 0.0.0.0 UG 0 0 0 eth1


But really we want:


# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.98.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 172.16.98.1 0.0.0.0 UG 0 0 0 eth0

Two things I learned today...

One, was (by fluke) that ^Y suspends a process like ^Z does... although it waits until the process wants to read input from the terminal before it suspends it... I guess that could be a useful criteria in some situations... I can probably think of other more useful things that could be implemented as built-in features though :-)

http://www.gnu.org/software/bash/manual/bashref.html#Job-Control-Basics


and the second was...