in reply to How to search and replace text characters in a perl script
#!usr/bin/perl use warnings; use strict; $|=1; #turn off stdout buffering, easier to debug warnings... my %dispatch = (G92 => sub{return}, G10 => sub{print "M104 S0 ; laser off\n";}, G11 => sub{print "M400 ; wait for moves to finish\n"; print "M104 S100 ; laser on\n";}, M190 => sub{return}, G1 => \&G1, ); while (my $line = <DATA>) { chomp $line; my ($op,$rest) = split ' ',$line,2; $rest //= ''; #define $rest as null string if undefined if (exists $dispatch{$op}) { $dispatch{$op}->($rest); } else { print "$line\n"; } } sub G1 { my $rest = shift; $rest =~ s/Z/Z-/; $rest =~ s/E[\d.]+//; print "G1 $rest\n"; } =prints: T1 G1 Z-0.050 F7800.000 M104 S0 ; laser off G1 Z-0.150 F7800.000 G1 X14.725 Y-8.975 F7800.000 G1 Z-0.050 F7800.000 M400 ; wait for moves to finish M104 S100 ; laser on G1 X14.725 Y8.975 F120.000 M104 S0 ; laser off G1 Z-0.150 F7800.000 G1 X-9.585 Y-0.615 F7800.000 G1 Z-0.050 F7800.000 M400 ; wait for moves to finish M104 S100 ; laser on =cut __DATA__ G92 E0 ; want to remove all G92 lines (works now) T1 G1 Z0.050 F7800.000 G10 ; retract G92 E0 G1 Z0.150 F7800.000 G1 X14.725 Y-8.975 F7800.000 G1 Z0.050 F7800.000 G11 ; unretract G92 E0 G1 X14.725 Y8.975 E0.01465 F120.000 G10 ; retract G92 E0 G1 Z0.150 F7800.000 G1 X-9.585 Y-0.615 F7800.000 G1 Z0.050 F7800.000 G11 ; unretract G92 E0
|
|---|