Revised by
sironekotoro
d8ab9a9
| #!/usr/bin/env perl
use strict;
use warnings;
# mac os用
# 1.実行時のクリップボードの中身を指定した文字列に書き換え
# 2.一定時間経過すると、クリップボードの中身を元に戻す
# クリップボードの中身を書き換える時間
my $time = 10;
# パスフレーズ
my $key = 'otsu';
# 入力を促すメッセージ
print "パスフレーズを入力してください > ";
# 標準入力を受け取り
my $input = <STDIN>;
# 改行を削る
chomp $input;
# 一時的にクリップボード上で書き換える文字列
my $string = "SECRET";
# 入力文字列が正しいか、間違っているかを
# if文の文字列比較で判定
if ( $input eq $key ) {
# クリップボードの内容を、スカラー変数に取り込む
# `` バッククォートで囲まれた文字列は、Perl上ではなく、
# OSで実行されるコマンド。
# pbpaste は実行すると、クリップボードの内容を表示する
# macOSのコマンド
# (なのでこのプログラムはMacでのみ動く)
# 実行した後の結果をスカラー変数 $clipbord に代入している
my $clipbord = `pbpaste`;
# Perlのsystem関数を利用して、OSに()内の
# 命令を実行させる
# 上記の`` バッククォートと違うのは、コマンドの実行結果を
# Perlが欲しいかどうか。
# 実行結果が欲しい場合には`` バッククォート
# 実行結果が入らない(実行されれば、それでいい)って場合は
# system関数を利用する
# 文字列をクリップボードに設定する
# pbcopyは、クリップボードに文字列を設定するmacOSの
# コマンド。
# echo '$string' | pbcopy
# はOSに渡される時に$stringの内容が展開されて以下のようになる
# echo 'SECRET' | pbcopy
# pbcopy はパイプ | で渡されたものをクリップボードに設定する
system("echo '$string' | pbcopy");
# カウントダウン表示
# 後何秒で元に戻るか気になったので入れた
# 趣味
for my $t ( 1 .. $time ) {
sleep 1;
print $time - $t, "\n";
}
# 指定の秒数待ち終わったら元の文字列を
# クリップボードに設定する
system("echo '$clipbord' | pbcopy");
}
else {
# 入力した文字列が異なって入ればエラー
print "error\n";
}
|