20190215のPerlに関する記事は2件です。

酒が飲めるワンライン

perl (5.18.2 で確認)

perl -E 'say"$_月は横浜で酒が飲めるぞ"for(1..12)'

ruby

ruby -e '12.times{|i|puts"#{i+1}月は横浜で酒が飲めるぞ"}'

bash

echo -e {1..12}月は横浜で酒が飲めるぞ"\n"

python3 (3.7.2 で確認)

python3 -c 'for n in range(1, 13): print(f"{n}月は横浜で酒が飲めるぞ")'

emacs-lisp (GNU Emacs 26.1 で確認)

(require 'cl)(let ((x 0))(while (< x 12) (cl-incf x)(insert (format "%d月は横浜で酒が飲めるぞ\n" x))))

php (PHP 5.6.30 で確認)

php -r 'for($i=1;$i<13;$i++){echo $i."月は横浜で酒が飲めるぞ\n";}'

Elixr (1.6.4 で確認)

elixir -e "1..12 |> Enum.map(&(\"#{&1}月は横浜で酒が飲めるぞ\n\")) |> IO.puts"

MySQL版 (MySQL 8 で確認)

CREATE DATABASE s;CREATE TABLE s.y (m int auto_increment, PRIMARY KEY (`m`));INSERT INTO s.y value (),(),(),(),(),(),(),(),(),(),(),();SELECT CONCAT(m, '月は横浜で酒が飲めるぞ') FROM s.y;DROP DATABASE s;

PostgreSQL (9.3 で確認)

psql -c "WITH RECURSIVE seq(i) AS (SELECT 1 UNION ALL SELECT i + 1 FROM seq WHERE i < 12) SELECT i || '月は横浜で酒が飲めるぞ' FROM seq;"

JavaScript (node.js v10.14.2)

node -e "for(let i=1;i<13;i++)console.log(i+'月は横浜で酒が飲めるぞ')"

Haskell (ghc8.4.4)

ghc -e 'mapM_ (\n-> putStrLn $ show n ++ "月は横浜で酒が飲めるぞ") [1..12]' 

GAWK(GNU Awk 4.1.3)

gawk 'BEGIN{for(i=1;i<13;i++) print i"月は横浜で酒が飲めるぞ"}'

ジャバ (OpenJDK11)

echo "IntStream.range(1, 13).forEach(m -> printf(\"%d月は横浜で酒が飲めるぞ\n\", m));" | jshell PRINTING -
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

フォルダ内画像のカラーモードをスクリプト処理でチェックする

 必要に迫られてフォルダ内画像のカラーモードをチェックできるmac用スクリプト書きました。今回は混入したカラーモード違いの画像をハネられればいいのでmacOSに最初から入ってるsipsを使ってます。対応画像形式はjpeg、png、gif、bmp、tif。DTPでまだよく見るEPSはsipsが対応して無いんで対象外です(ImageMagickのidentifyコマンドなら行けるみたい)。

CMYK/グレースケール画像の混入をチェック

use utf8;
use Encode qw/encode decode/;
use File::Basename qw/basename dirname/;
use File::Find;

#画像フォルダのパスを取得
$imageFolderPath = $ARGV[0];
$imageFolderPath = decode('UTF-8', $imageFolderPath);
#各画像ファイルへの絶対パスを取得
my @imageFilePaths;
find(\&getEachFilePath, $imageFolderPath);

###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&eachImageFileProceed($imageFilePath);
}

###################ログにタイトル部分を合成###################
if ($imageColorModeCheckLog eq ""){
    $imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . 'OK! All Files No Problem!';
} else {
    $imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . $imageColorModeCheckLog;
}

###################出力###################
#チェック結果を出力
$imageColorModeCheckLog = encode('UTF-8', $imageColorModeCheckLog);
print $imageColorModeCheckLog . "\n";

exit;

###################サブルーチン###################
#各imageファイルのチェック
sub eachImageFileProceed {
    my $imageFilePath = $_[0];
    #各imageファイル名を取得
    my $imageFileName = basename $imageFilePath;
    my $shellCommand = "sips -g space " . $imageFilePath;
    my $imageColorSpaceValue = `$shellCommand`;

    unless ($imageColorSpaceValue =~ /  space: RGB/){
        $imageColorModeCheckLog = ($imageColorModeCheckLog . 'Caution! ImageColorMode Error ' . '   ' . 'FileName:' . $imageFileName . "\n")
    }
}
#各imageファイルへの絶対パスを取得
sub getEachFilePath {
    my $file = $_;
    my $path = $File::Find::name;
    push(@imageFilePaths,$path) if ($path =~ /^(.*?)\.(jpg|jpeg|png|gif|bmp|tif|tiff)$/i);
}

RGB画像の混入をチェック

use utf8;
use Encode qw/encode decode/;
use File::Basename qw/basename dirname/;
use File::Find;

#画像フォルダのパスを取得
$imageFolderPath = $ARGV[0];
$imageFolderPath = decode('UTF-8', $imageFolderPath);
#各画像ファイルへの絶対パスを取得
my @imageFilePaths;
find(\&getEachFilePath, $imageFolderPath);

###################チェック処理###################
#ログ出力用変数定義
our $imageColorModeCheckLog = "";
#各imageファイルをチェック
foreach $imageFilePath (@imageFilePaths){
&eachImageFileProceed($imageFilePath);
}

###################ログにタイトル部分を合成###################
if ($imageColorModeCheckLog eq ""){
    $imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . 'OK! All Files No Problem!';
} else {
    $imageColorModeCheckLog = '##ImageFile ColorMode Check Result : ' . "\r\n" . $imageColorModeCheckLog;
}

###################出力###################
#チェック結果を出力
$imageColorModeCheckLog = encode('UTF-8', $imageColorModeCheckLog);
print $imageColorModeCheckLog . "\n";

exit;

###################サブルーチン###################
#各imageファイルのチェック
sub eachImageFileProceed {
    my $imageFilePath = $_[0];
    #各imageファイル名を取得
    my $imageFileName = basename $imageFilePath;
    my $shellCommand = "sips -g space " . $imageFilePath;
    my $imageColorSpaceValue = `$shellCommand`;

    if ($imageColorSpaceValue =~ /  space: RGB/){
        $imageColorModeCheckLog = ($imageColorModeCheckLog . 'Caution! ImageColorMode Error ' . '   ' . 'FileName:' . $imageFileName . "\n")
    }
}
#各imageファイルへの絶対パスを取得
sub getEachFilePath {
    my $file = $_;
    my $path = $File::Find::name;
    push(@imageFilePaths,$path) if ($path =~ /^(.*?)\.(jpg|jpeg|png|gif|bmp|tif|tiff)$/i);
}

 なおチェック部分のunlessをifに変えただけです。

 ターミナルで

perl imgcolormodecheck.pl [画像フォルダのパス] 

 みたいな感じで使えます。誤ったカラーモードの画像の混入があれば

##ImageFile ColorMode Check Result : 
Caution! ImageColorMode Error    FileName:001.png
Caution! ImageColorMode Error    FileName:021.png
Caution! ImageColorMode Error    FileName:029.png

 のようなアラートが出る感じ。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む