0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Perl/TkとPAR::Packerで、選択したテキストファイルを整形するGUIアプリを作る

Last updated at Posted at 2021-08-29

概要

前回の記事「Perlスクリプトファイルをexe化したい」で単純なテキストを表示させるスクリプトをexe化しました。

今度は、GUIでファイルを選択して、テキストデータを整形するプログラムをPerlで作ってみたくなりました。

環境

前回と変わりません。

  • Windows 10 Home
  • 64 ビット オペレーティング システム
  • 20H2
  • OSビルド:19042.1165
  • perl v5.32.1 built for MSWin32-x64-multi-thread
  • C:\Strawberry\perl\bin/cpan script version 1.676, CPAN.pm version 2.28

Perl/Tkのインストール

参考サイト1. Perl/Tk を使った GUI プログラミング (前編)を見ながらTkというモジュールをインストールする。これを使うとGUIアプリが作れるらしいです。

cpan> install Tk
中略
C:\STRAWB~1\c\bin\gmake.exe install UNINST=1 -- OK

1~2分でインストールが完了しました。

GUIアプリ化するコード

これも参考サイト2. Perl/Tkで日本語のファイル名を使う(Win32)のコードを少し変えます。

  • 日本語ファイルは想定していないのでその部分を削除
  • ファイル選択後に表示せず、テキスト処理するようにする
  • 変数名がわかりにくいので変更
text_process.pl
#!usr/bin/env perl
use utf8;
use strict;
use warnings;
use Tk;
use Encode;

my $main_window = new MainWindow;

$main_window->Button(-text=>'ファイル選択',-command=>\&text_process)->pack;
MainLoop;

sub text_process{
    my $filename=$main_window->getOpenFile;
    return unless($filename);
    open(my $fin, $filename) or die "$!:cannot open $filename\n";
    my @lines = <$fin>;
    my $text = join("",@lines);
    close($fin);

    #ファイル読み込み
    open(IN, $filename) or die "$!";

    #書き込みファイル作成
    open(OUT, ">output.csv");

    #ファイル全体を丸呑み
    $text = do { local $/; <IN>};

	#テキストを置換したり、なにか処理
    $text =~ s/ +/ /g; #文中のスペースを削除
    $text =~ s/^ / /g; #文頭のスペースを削除
    $text =~ s/\n//g; #改行を削除
	
	#中略
	
    #出力
    print(OUT "$text");

    #ファイルを閉じる
    close(IN);
    close(OUT);
}

exe化

pp -o text_process.exe text_process.pl

実行結果

テストデータは公開できませんが、うまいことデータが整形されました。

終わりに

誰かが散々やっていそうですが、はじめて自分でGUIアプリを作れたのでメモとして残しておきます。これを気にみんなが使える便利なスクリプトをどんどん作っていきたいですね。

参考サイト

  1. Perl/Tk を使った GUI プログラミング (前編)

  2. Perl/Tkで日本語のファイル名を使う(Win32)

  3. Perlスクリプトファイルをexe化したい

  4. Perlでファイルを丸呑みする3つの方法

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?