Hej igen
Grunden til at den ikke kunne finde en "manglende unit" hvis den havde
fundet en unit før, har jeg fundet ud af. RegExp returnere jo sandt eller
falsk afhængig af om den finder noget.... Og det er jo yders anvendeligt,
istedet for at checke resultatet, som ikke ændre sig....
substr og exception forstår jeg stadigt ikke, men måske er det heller ikke
nødvendigt at bruge i mit tilfælde?
med venlig hilsen
Torben
"T. Sandbaek" <tpn@NO-SPAM-PLEASEcontrol-systems.com> wrote in message
news:3e785f1e$0$20434$edfadb0f@dread11.news.tele.dk...
> Hej
>
> Jeg forstår vist ikke helt dokumentationen til substr eller er det eval?,
så
> jeg håber at der er nogle som kan hjælpe mig lidt.
>
> jeg har en file som er "næsten" kollone baseret, men da det lavet af
> programmør som bruger cut and paste, er den ikke helt kollonne baseret, så
> derfor tænkte jeg at jeg villle prøve at lave et script som kunne konveter
> dataene til en komma sep. fil istedet!
> dataene:
>
> NotUsed;
> noget ; 1 m Beskrivelse der kan være mange ting
> xxxxx ; 0.1 number Endnu en besk
> xyxxx ; On / Off Turn on xyxxx
> yyyyy ; 0.001 ° temperature in xyx
> asd ; Kun Besk. kan indeholde tal, etc.
> NotUsed;
> etc.
>
> skulle blive til
> NotUsed, , , ,
> noget , 1 , m, Beskrivelse der kan være mange ting,
> xxxxx , 0.1, number, Endnu en besk,
> xyxxx , , On / Off, Turn on xyxxx,
> etc.
> (spaces er under ordnet )
>
> Først har jeg splitte linjen op i før og efter semikolonet
> Jeg har så tænkt at jeg ville søge efter et tal inden for de første 0-10
> positioner i min variable som indeholder alt efter ';'
> men jeg så at $scale indeholdte 0 (ikke "" eller "0" men '\0' i C ) hvis
der
> ikke var en streng, så jeg satte en if ($scale == 0) ind, men det er vist
> ikke den rigtige måde ( jeg får warnings når jeg køre scriptet med
warnings
> enablet), så jeg prøvede med eval omkring substr, men der sker ingen ting
> og min "unit udtrækker" virker ikke når linjen ($comment) er tom når der
har
> været noget i den en gang før ???, men ok første gang??
>
> Der må være noget simpel og indlysnende som jeg overser, men hvad??
>
> ($code,$comment) = split(/;/);
> eval {$scale_ = substr($comment, 0,10);}; warn $@ if $@;
> $scale_=~/([01\.]+)/g;
> $scale=$1;
> if ($scale == 0) #if the line is empty, just empty $scale, not \0!!!
> {
> $scale = "";
> $scaleLng = 0;
> }
> else
> {
> $scaleLng = $+[0];
> }
>
> eval {$unit_ = substr($comment, $scaleLng,16-$scaleLng);}; warn $@ if $@;
>
> $unit_=~/([^\s]+)/;
> if ($1 eq "") #if the line is empty, just empty $unit, not \0!!!
> {
> $unit = "";
> }
> else
> {
> #Ok, so we have a unit, and $-[0] contains the start adr. and I hope its
> max length is 16!
> #(counted 12 in the file I'm looking at now!)
> $unit__ = substr($comment, $-[1]+$scaleLng,16);
>
> $unit__ =~ /[.]{6,}/;
> $unit = $1;
>
> }
>
>
> jeg har beholdt/lavet mange temp variabler for at kunne debugge... men jeg
> syntes ikke rigtigt det hjælper...
>
> P.S.
> Jeg håber at I ikke brokker jer for meget over at jeg har sendt dette
> som html, men for at vise kollonere ...
>
>
> med venlig hilsen
> Torben S.
>
>