From: ara.t.howard@... Date: 2006-08-15T02:12:12+09:00 Subject: Re: Trouble parsing against a hash On Tue, 15 Aug 2006, Peter Bailey wrote: > Hello, > I get the following error message from RUBY when I try to run the script > shown below. Sorry, the hash is huge. > > I need to match the beginning of file names with the keys in a hash. If > there's a match, then I need to pull the value for that matching key. > That's all really. > > Thanks, > Peter get a good highlighting editor like vim and you'll see these errors > require 'FileUtils' ^ ^ ^ ^ ^ ^ f u > :wh650b1p => 'lrr000', :wh650b2p => 'lrr000 } ^ ^ ^ ' > if File.fnmatch('#{key}*', #{psfile} ) } ^ ^ ^ ^ ^ ^ " " and you probably meant "#{ key }*" not '#{ key }*' since only the former expands the variable (note double vs single quotes). btw. with huge hashes like this it's far easier to maintain an inlined yaml doc of the hash that ruby source. for instance, this is long, but quite easy to read, maintain, and search: harp:~ > cat a.rb require 'fileutils' require 'yaml' fileshash = YAML.load DATA.read Dir.chdir 'u:/indexes' paths = Dir.glob "*.ps" paths.each do |path| filehash.each{|k,v| puts "#{ v }" if File.fnmatch("#{ k }*", "#{ path }") } end __END__ --- aacmc7p: aacm00 acm059p: bacm00 acm061p: bacm00 acmc59p: bacm00 acmt59p: bacm00 adc064p: adam00 adm064p: adam00 adm065p: adam00 apr005p: tmap00 atc071p: atrr00 bac054p: bnkr00 bkc031p: bblr00 bpc061p: btm000 cal158p: clas00 car125p: care00 cbncc7p: cbnc00 cgmprp_: cglw00 chc074p: chem00 chc075p: chem00 clc017p: clr000 crc074p: crl000 ctl157p: ctlr00 dec079p: der000 dlc080p: dlr000 dtc069p: dt0000 edc131p: eddg00 edr094p: edr000 edt131p: eddg00 eeomc7p: eeom00 eip066p: eplr00 emgc15p: emgd00 erc023p: er0000 ercr25p: er0000 exe155p: exer00 fcc093p: fcr000 flc046p: flr000 gec099p: gerr00 hac076p: hzrf00 hcc201p: hccg00 hcci01p: hccg00 hcp030p: hce000 hct201p: hccg00 hcti01p: hccg00 hfr085p: hfra00 hla020p: hblw00 hlb020p: hblw00 hlr036p: hlr000 hltc20p: hblw00 hpr042p: hppr00 hrr081p: hrr000 ierc77p: iner00 ierc78p: iner00 itc010p: itr000 itc101p: itr000 jsc047p: josh00 lrc013p: lrr000 lrc096p: lrwk00 lrfc74p: lrr000 lrfl21p: lrr000 lrgc68p: lrr000 lrnm21p: lrr000 lrrc21p: lrr000 lrrc22p: lrr000 lrrc24p: lrr000 lrrc37p: lrr000 lrrc49p: lrr000 lrrc74p: lrr000 lrrc82p: lrr000 lrrmc6p: lrr000 lrrt37p: lrr000 lrt013p: lrr000 lrtc68p: lrr000 lwc001p: lw0000 lwc002p: lw0000 lwca85p: lw0000 lwgc86p: lw0000 lwsc85p: lw0000 mal058p: malr00 mcc019p: mcr000 mopc68p: mopc00 mopd68p: mopc00 mopec8p: mopc00 mopt68p: mopc00 mpc067p: mopc00 mrl150p: mrlr00 osbc35p: oshr00 osc022p: oshr00 pec029p: pen000 pgc116p: pygd00 pgc117p: pygd00 plr126p: plir00 psc044p: pslr00 pslc45p: pslr00 psvc45p: pslr00 ptcc54p: ptcj00 pvl162p: pvlr00 rtc129p: rkpg00 src087p: srlr00 tlc100p: txlr00 tmc030p: tmeg00 tmc032p: tmwr00 tmc040p: tmf000 tmc045p: tmtr00 tmc050p: tmfp00 tmc060p: tmcp00 tmc065p: tmpl00 tmc070p: tmeg00 tmc080p: tmi000 tmc090p: tmre00 tmc100p: tm0000 tmcc20p: tmcp00 tmf186p: tmf000 tmi185p: tmus00 tmic20p: tmus00 tmrc20p: tmre00 tms190p: stat00 tmsp50p: stat00 tmt055p: tmtr00 uln007p: ulr000 wcr006p: wcr000 whl164p: wplr00 ad137b1p: lrr000 ad137b2p: lrr000 adc095: lrr000 eb062b1p: ebcd00 eb161b1p: ebcd00 eb161b2p: ebcd00 eb161b4p: ebcd00 eb960b1p: ebcd00 eb960b2p: ebcd00 er022b1p: er0000 er022b2p: er0000 er121b1p: er0000 er121b2p: er0000 er121b5p: er0000 er901b1p: er0000 er901b2p: er0000 er901b3p: er0000 fe015b1p: lrr000 ie005b1p: lrr000 ie105b1p: lrr000 it071b1p: itr000 it171b1p: itr000 it171b3p: itr000 lr315b1p: lrr000 lr315b2p: lrr000 lrr084: lrr000 lrr089: lrr000 lrr090: lrr000 lrr095: lrr000 lrr096: lrr000 lrr122: lrr000 ml032b1p: med000 ml032b1t: med000 ml032b2p: med000 ml032b2t: med000 ml131b1p: med000 ml131b1t: med000 ml131b2t: med000 ml930b1p: med000 ml930b1t: med000 os042b2p: oshr00 os142b2p: oshr00 osh034: osh200 pq181b1p: pq0000 pq181b1t: pq0000 pq181b2p: pq0000 pq181b3t: pq0000 pq192b1p: pq0000 pq192b1t: pq0000 pq192b3p: pq0000 wh650b1p: lrr000 wh650b2p: lrr000