Skip to content

Instantly share code, notes, and snippets.

@dpk dpk/clipcat
Created Nov 18, 2010

What would you like to do?
usage: clipcat [filename] -- despite being called 'cat', it doesn't concatenate multiple
#!/usr/bin/perl -w
# clipcat: the misleadingly-named textClipping outputter for Mac OS X.
# you'll need MacPerl and DeRez. I think the latter ships with OS X,
# but at least comes with the dev tools (which by definition you have
# if you installed MacPerl)
# -------------------------
# by David Kendal ( / @dpkendal)
# bug reports & comments to the address on
use strict;
use utf8;
use MacPerl;
use File::Basename;
my $script = basename($0);
my $file = $ARGV[0];
my $fileinfo = MacPerl::GetFileInfo($file);
$file = escape($file);
if (!-e $file) {
print STDERR "$script: no such file $file.\n"; exit 1;
} elsif ($fileinfo ne 'clpt') {
print STDERR "$script: file $file is not a clipping.\n"; exit 1;
my @resdata = `DeRez -only 'utf8' '$file'`;
pop(@resdata); pop(@resdata);
foreach (@resdata) {
my $line = $_;
chomp $line;
$line =~ s{^\t\$"|" +/\*.+\*/$}{}g;
my @blobs = split / /, $line;
foreach (@blobs) {
my $blob = $_;
my $hex1 = substr $blob, 0, 2;
my $hex2 = substr $blob, 2, 3;
print chr(hex($hex1)).chr(hex($hex2));
exit 0;
sub escape { # -- should work to escape the filename
my $text = shift; # for handing to DeRez
$text =~ s/\\/\\\\/g;
$text =~ s/'/\\'/g;
return $text;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.