#!/usr/bin/perl #use strict; use Tkx; use Digest::CRC;; use Win32::HideConsole; hide_console; sub trim($); my $mw = Tkx::widget->new('.'); $mw->g_wm_title("CRC32 Calculator"); $mw->g_wm_minsize( 100, 200 ); my $asciicrc,$hexcrc; # Command Buttons my $asciiconversion = $mw->new_ttk__button( -text => "ASCII Conversion", -width => 20, -command => sub { ascii(); } ); Tkx::grid( $asciiconversion, -row => 1, -columnspan => 1, -padx => 5, -pady => 5 ); my $hexconversion = $mw->new_ttk__button( -text => "HEX Conversion", -width => 20, -command => sub { hexa(); } ); Tkx::grid( $hexconversion, -row => 2, -columnspan => 2, -padx => 0, -pady => 0 ); # Text Boxes my $text; my $input = $mw->new_tk__text( -width => 40, -height => 5, -state => "normal", -wrap => "none" ); my $output = $mw->new_tk__text( -width => 40, -height => 5, -state => "normal", -wrap => "none" ); Tkx::grid( $input, -row => 3, -columnspan => 1, -padx => 10, -pady => 10 ); Tkx::grid( $output, -row => 4, -columnspan => 2, -padx => 10, -pady => 10 ); Tkx::MainLoop(); sub ascii { my $asciicontent = $input->get("1.0", "end"); my $asciitrim = asciitrimm($asciicontent)."\n"; sub asciitrimm($) { my $asciicontent = shift; $asciicontent =~ s/^\s+//; $asciicontent =~ s/\s+$//; $asciicrc = Digest::CRC->new( type => "crc32" ) ; $asciicrc->add($asciicontent); my $asciiout=$asciicrc->hexdigest(); $output->m_insert('end', "$asciicontent$asciiout\n"); $output->m_yview('end'); } } sub hexa { my $hexcontent = $input->get("1.0", "end"); my $hextrim = hextrimm($hexcontent)."\n"; sub hextrimm($) { my $hexcontent = shift; $hexcontent =~ s/^\s+//; $hexcontent =~ s/\s+$//; $hexcrc = Digest::CRC->new(type=>"crc32");; my $hexout= $hexcrc->add( pack 'H*', $hexcontent)->hexdigest;; $output->m_insert('end', "$hexcontent$hexout\n"); $output->m_yview('end'); } }